diff --git a/objectstore/cta-objectstore-collect-orphaned-object.cpp b/objectstore/cta-objectstore-collect-orphaned-object.cpp index 98a85ffec62b9c846523738b88bc34781912bc0c..334530224454541d1f004c93ad0240a225079c84 100644 --- a/objectstore/cta-objectstore-collect-orphaned-object.cpp +++ b/objectstore/cta-objectstore-collect-orphaned-object.cpp @@ -30,6 +30,7 @@ #include "RetrieveRequest.hpp" #include "GenericObject.hpp" #include "common/log/StringLogger.hpp" +#include "common/Configuration.hpp" #include "catalogue/CatalogueFactory.hpp" #include <iostream> #include <stdexcept> @@ -41,14 +42,24 @@ int main(int argc, char ** argv) { std::unique_ptr<cta::catalogue::Catalogue> catalogue; cta::log::StringLogger sl("cta-objectstore-collect-orphaned", cta::log::DEBUG); cta::log::LogContext lc(sl); + std::string objectName; if (4 == argc) { be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release()); const cta::rdbms::Login catalogueLogin = cta::rdbms::Login::parseFile(argv[2]); const uint64_t nbConns = 1; const uint64_t nbArchiveFileListingConns = 0; catalogue=std::move(cta::catalogue::CatalogueFactory::create(sl, catalogueLogin, nbConns, nbArchiveFileListingConns)); + objectName = argv[3]; + } else if (2 == argc) { + cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf"); + be = std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr))); + const cta::rdbms::Login catalogueLogin = cta::rdbms::Login::parseFile("/etc/cta/cta_catalogue_db.conf"); + const uint64_t nbConns = 1; + const uint64_t nbArchiveFileListingConns = 0; + catalogue = std::move(cta::catalogue::CatalogueFactory::create(sl, catalogueLogin, nbConns, nbArchiveFileListingConns)); + objectName = argv[1]; } else { - throw std::runtime_error("Wrong number of arguments: expected 3: <objectstoreURL> <catalogue login file> <objectname>"); + throw std::runtime_error("Wrong number of arguments: expected 1 or 3: [objectstoreURL catalogueLoginFile] objectname"); } // If the backend is a VFS, make sure we don't delete it on exit. // If not, nevermind. @@ -57,7 +68,7 @@ int main(int argc, char ** argv) { } catch (std::bad_cast &){} std::cout << "Object store path: " << be->getParams()->toURL() << std::endl; // Try and open the object. - cta::objectstore::GenericObject go(argv[3], *be); + cta::objectstore::GenericObject go(objectName, *be); cta::objectstore::ScopedExclusiveLock gol(go); std::cout << "Object address: " << go.getAddressIfSet() << std::endl; go.fetch(); @@ -74,7 +85,7 @@ int main(int argc, char ** argv) { gol.release(); bool someGcDone=false; gcpass: - cta::objectstore::ArchiveRequest ar(argv[3], *be); + cta::objectstore::ArchiveRequest ar(objectName, *be); cta::objectstore::ScopedExclusiveLock arl(ar); ar.fetch(); for (auto & j: ar.dumpJobs()) { @@ -100,7 +111,7 @@ int main(int argc, char ** argv) { // Reopen the object as an ArchiveRequest std::cout << "The object is an RetrieveRequest" << std::endl; gol.release(); - cta::objectstore::RetrieveRequest rr(argv[3], *be); + cta::objectstore::RetrieveRequest rr(objectName, *be); cta::objectstore::ScopedExclusiveLock rrl(rr); rr.fetch(); if (!be->exists(rr.getOwner())) { diff --git a/objectstore/cta-objectstore-dereference-removed-queues.cpp b/objectstore/cta-objectstore-dereference-removed-queues.cpp index a4667c4368b5d05c20120a1e9a473ad513d65473..560522493c2431fa27e253d4be4e10ada94b1748 100644 --- a/objectstore/cta-objectstore-dereference-removed-queues.cpp +++ b/objectstore/cta-objectstore-dereference-removed-queues.cpp @@ -22,6 +22,7 @@ * unblock tape servers after changing the ArchiveQueue schema during development. */ +#include "common/Configuration.hpp" #include "BackendFactory.hpp" #include "BackendVFS.hpp" #include "Agent.hpp" @@ -35,8 +36,11 @@ int main(int argc, char ** argv) { std::unique_ptr<cta::objectstore::Backend> be; if (2 == argc) { be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release()); + } else if (1 == argc) { + cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf"); + be = std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr))); } else { - throw std::runtime_error("Wrong number of arguments: expected 1"); + throw std::runtime_error("Wrong number of arguments: expected 0 or 1: [objectstoreURL]"); } // If the backend is a VFS, make sure we don't delete it on exit. // If not, nevermind. diff --git a/objectstore/cta-objectstore-dump-object.cpp b/objectstore/cta-objectstore-dump-object.cpp index d12ff6a6dc65669b9c4147fd16dd70a6371a1ef7..7e3899ef311a39ad22517fa9852359052a48d813 100644 --- a/objectstore/cta-objectstore-dump-object.cpp +++ b/objectstore/cta-objectstore-dump-object.cpp @@ -22,6 +22,7 @@ * the path the backend store and exit */ +#include "common/Configuration.hpp" #include "BackendFactory.hpp" #include "BackendVFS.hpp" #include "GenericObject.hpp" @@ -31,19 +32,25 @@ int main(int argc, char ** argv) { try { std::unique_ptr<cta::objectstore::Backend> be; + std::string objectName; if (3 == argc) { be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release()); + objectName = argv[2]; + } else if (2 == argc ){ + cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf"); + be=std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr))); + objectName = argv[1]; } else { - throw std::runtime_error("Wrong number of arguments: expected 2"); + throw std::runtime_error("Wrong number of arguments: expected 1 or 2: [objectstoreURL] objectname"); } // If the backend is a VFS, make sure we don't delete it on exit. // If not, nevermind. try { dynamic_cast<cta::objectstore::BackendVFS &>(*be).noDeleteOnExit(); } catch (std::bad_cast &){} - std::cout << "Object store path: " << be->getParams()->toURL() - << " object name=" << argv[2] << std::endl; - cta::objectstore::GenericObject ge(argv[2], *be); + std::cout << "Object store path: " << be->getParams()->toURL() << std::endl + << "Object name: " << objectName << std::endl; + cta::objectstore::GenericObject ge(objectName, *be); cta::objectstore::ScopedSharedLock gel(ge); ge.fetch(); std::cout << ge.dump(gel) << std::endl; diff --git a/objectstore/cta-objectstore-list.cpp b/objectstore/cta-objectstore-list.cpp index 14f6eb55e7961e556c8b063d889db07168f9ab81..e0ddc4e82bdc0615cb2edd2083723fc7ffa51839 100644 --- a/objectstore/cta-objectstore-list.cpp +++ b/objectstore/cta-objectstore-list.cpp @@ -22,6 +22,7 @@ * the path the backend store and exit */ +#include "common/Configuration.hpp" #include "BackendVFS.hpp" #include "BackendFactory.hpp" #include "RootEntry.hpp" @@ -33,12 +34,12 @@ int main(int argc, char ** argv) { try { std::unique_ptr<cta::objectstore::Backend> be; if (1 == argc) { - be.reset(new cta::objectstore::BackendVFS); - + cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf"); + be = std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr))); } else if (2 == argc) { be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release()); } else { - throw std::runtime_error("Wrong number of arguments: expected 0 or 1"); + throw std::runtime_error("Wrong number of arguments: expected 0 or 1: [objectstoreURL]"); } // If the backend is a VFS, make sure we don't delete it on exit. // If not, nevermind. @@ -51,7 +52,7 @@ int main(int argc, char ** argv) { std::cout << *o << std::endl; } } catch (std::exception & e) { - std::cerr << "Failed to initialise the root entry in a new VFS backend store" + std::cerr << "Failed to list backend store: " << std::endl << e.what() << std::endl; } } \ No newline at end of file diff --git a/objectstore/cta-objectstore-unfollow-agent.cpp b/objectstore/cta-objectstore-unfollow-agent.cpp index 1ab5273a891b6ccde4c1877f6c19d4296f73bcd1..1a61b3404e6bc88d6a0363d446fda6d7dbef3f95 100644 --- a/objectstore/cta-objectstore-unfollow-agent.cpp +++ b/objectstore/cta-objectstore-unfollow-agent.cpp @@ -22,6 +22,7 @@ * the path the backend store and exit */ +#include "common/Configuration.hpp" #include "BackendFactory.hpp" #include "BackendVFS.hpp" #include "Agent.hpp" @@ -33,11 +34,17 @@ int main(int argc, char ** argv) { try { + std::string agentName; std::unique_ptr<cta::objectstore::Backend> be; if (3 == argc) { be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release()); + agentName = argv[2]; + } else if (2 == argc) { + cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf"); + be=std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr))); + agentName = argv[1]; } else { - throw std::runtime_error("Wrong number of arguments: expected 2"); + throw std::runtime_error("Wrong number of arguments: expected 1 or 2: [objectstoreURL] agentName"); } // If the backend is a VFS, make sure we don't delete it on exit. // If not, nevermind. @@ -45,8 +52,8 @@ int main(int argc, char ** argv) { dynamic_cast<cta::objectstore::BackendVFS &>(*be).noDeleteOnExit(); } catch (std::bad_cast &){} std::cout /* << "Object store path: " << be->getParams()->toURL() - << " agent */<< "name=" << argv[2] << std::endl; - if (!be->exists(argv[2])) { + << " agent */<< "name=" << agentName << std::endl; + if (!be->exists(agentName)) { // Agent does not exist: remove from registry. cta::objectstore::RootEntry re (*be); cta::objectstore::ScopedSharedLock rel(re); @@ -55,12 +62,12 @@ int main(int argc, char ** argv) { rel.release(); cta::objectstore::ScopedExclusiveLock arl(ar); ar.fetch(); - ar.removeAgent(argv[2]); + ar.removeAgent(agentName); ar.commit(); std::cout << "De-listed a non-existing agent." << std::endl; exit (EXIT_SUCCESS); } - cta::objectstore::Agent ag(argv[2], *be); + cta::objectstore::Agent ag(agentName, *be); cta::objectstore::ScopedExclusiveLock agl(ag); try { ag.fetch();