21 const std::set<std::string> &protected_xattrs,
22 const std::set<gid_t> &priviledged_xattr_gids)
24 visibility_(visibility),
25 protected_xattrs_(protected_xattrs),
26 privileged_xattr_gids_(priviledged_xattr_gids),
87 std::map<std::string, BaseMagicXattr *>::iterator it =
xattr_list_.begin();
104 if (!dirent->
IsLink())
continue;
110 PANIC(
"unknown magic xattr flavor");
112 result += (*it).first;
113 result.push_back(
'\0');
130 result->
Lock(path, d);
141 "Magic extended attribute with name %s already registered",
168 std::set<std::string>::const_iterator iter;
169 std::vector<string> tmp;
173 tmp.push_back(*iter);
177 if (tmp.size() > 0) {
180 "Following CVMFS_XATTR_PROTECTED_XATTRS are "
181 "set but not recognized: %s", msg.c_str());
185 std::set<gid_t>::const_iterator iter_gid;
191 if (tmp.size() > 0) {
194 "Following CVMFS_XATTR_PRIVILEGED_GIDS are set: %s", msg.c_str());
237 "'chunked', but no chunks found.",
path_.
c_str());
240 for (
size_t i = 0; i < chunks.
size(); ++i) {
269 "'chunked', but no chunks found.",
path_.
c_str());
310 std::vector<string> host_chain;
311 std::vector<int> rtt;
312 unsigned current_host;
314 &host_chain, &rtt, ¤t_host);
315 if (host_chain.size()) {
316 return std::string(host_chain[current_host]);
318 return "internal error: no hosts defined";
323 unsigned seconds, seconds_direct;
325 GetTimeout(&seconds, &seconds_direct);
342 std::vector<std::string> host_chain;
343 std::vector<int> rtt;
344 unsigned current_host;
346 GetHostInfo(&host_chain, &rtt, ¤t_host);
347 if (host_chain.size()) {
348 return std::string(host_chain[current_host]);
350 return "internal error: no hosts defined";
356 std::vector<std::string> host_chain;
357 std::vector<int> rtt;
358 unsigned current_host;
360 GetHostInfo(&host_chain, &rtt, ¤t_host);
361 if (host_chain.size()) {
362 result = host_chain[current_host];
363 for (
unsigned i = 1; i < host_chain.size(); ++i) {
365 ";" + host_chain[(i+current_host) % host_chain.size()];
368 result =
"internal error: no hosts defined";
386 result =
"Not in cache";
395 result = hash.ToString();
407 for (std::vector<LogBufferEntry>::reverse_iterator itr = buffer.rbegin();
408 itr != buffer.rend(); ++itr)
412 itr->message +=
" <snip>";
414 result +=
"[" +
StringifyTime(itr->timestamp,
true ) +
" UTC] " +
426 const uint64_t period_s = 24 * 60 * 60;
460 int64_t n_invocations =
463 if (n_invocations == 0)
466 int64_t n_downloads =
468 float hitrate = 100. * (1. -
469 (
static_cast<float>(n_downloads) / static_cast<float>(n_invocations)));
474 vector< vector<download::DownloadManager::ProxyInfo> > proxy_chain;
475 unsigned current_group;
477 &proxy_chain, ¤t_group, NULL);
478 if (proxy_chain.size()) {
479 return proxy_chain[current_group][0].url;
486 vector< vector<download::DownloadManager::ProxyInfo> > proxy_chain;
487 unsigned current_group;
489 std::string buf =
"";
490 for (
unsigned int i = 0; i < proxy_chain.size(); i++) {
491 for (
unsigned int j = 0; j < proxy_chain[i].size(); j++) {
492 buf += proxy_chain[i][j].url;
561 return "Failed to open metadata file";
567 return "Failed to open: metadata file is too big";
572 ->
Pread(fd, buffer, actual_size, 0);
574 if (bytes_read < 0) {
575 return "Failed to read metadata file";
577 return string(buffer, buffer + bytes_read);
600 int64_t rx = statistics->
Lookup(
"download.sz_transferred_bytes")->
Get();
606 int64_t rx = statistics->
Lookup(
"download.sz_transferred_bytes")->
Get();
607 int64_t time = statistics->
Lookup(
"download.sz_transfer_time")->
Get();
624 unsigned seconds, seconds_direct;
631 unsigned seconds, seconds_direct;
652 return std::string(VERSION) +
"." + std::string(CVMFS_PATCH_LEVEL);
656 std::vector<std::string> host_chain;
657 std::vector<int> rtt;
658 unsigned current_host;
661 &host_chain, &rtt, ¤t_host);
662 if (host_chain.size()) {
663 return std::string(host_chain[current_host]) + std::string(
path_.
c_str());
666 return std::string(
"");
std::vector< LogBufferEntry > GetLogBuffer()
#define LogCvmfs(source, mask,...)
const std::set< gid_t > privileged_xattr_gids_
int ChecksumFd(int fd, shash::Any *id)
virtual std::string GetValue()
bool IsExternalFile() const
const Counters & GetCounters() const
virtual int64_t GetSize(int fd)=0
FileSystem * file_system()
Item At(const size_t index) const
virtual bool PrepareValueFenced()
bool PrepareValueFencedProtected(gid_t gid)
virtual std::string GetValue()
cvmfs::Fetcher * fetcher()
std::string subcatalog_path_
virtual uint64_t GetCleanupRate(uint64_t period_s)=0
bool IsChunkedFile() const
perf::Statistics * statistics()
void Register(const std::string &name, BaseMagicXattr *magic_xattr)
virtual bool PrepareValueFenced()
bool volatile_flag() const
virtual std::string GetValue()
MountPoint * mount_point()
virtual std::string GetValue()
string JoinStrings(const vector< string > &strings, const string &joint)
std::string ToString(const bool with_suffix=false) const
virtual std::string GetValue()
virtual std::string GetValue()
catalog::Counters counters_
BaseMagicXattr * GetLocked(const std::string &name, PathString path, catalog::DirectoryEntry *d)
const std::set< std::string > protected_xattrs_
virtual std::string GetValue()
virtual bool PrepareValueFenced()
virtual std::string GetValue()
const shash::Any & content_hash() const
virtual std::string GetValue()
virtual bool PrepareValueFenced()
std::string AlgorithmName(const zlib::Algorithms alg)
assert((mem||(size==0))&&"Out Of Memory")
MountPoint * mount_point_
virtual std::string GetValue()
virtual std::string GetValue()
catalog::DirectoryEntry * dirent_
virtual std::string GetValue()
virtual int Open(const BlessedObject &object)=0
string StringifyTime(const time_t seconds, const bool utc)
string StringifyDouble(const double value)
virtual std::string GetValue()
virtual bool PrepareValueFenced()
std::string StringifyUint(const uint64_t value)
virtual std::string GetValue()
shash::Any checksum() const
bool IsPrivilegedGid(gid_t gid)
virtual bool PrepareValueFenced()
bool has_membership_req()
virtual std::string GetValue()
MountPoint * mount_point_
virtual std::string GetValue()
perf::Counter * n_fs_open()
virtual std::string GetValue()
std::string membership_req()
virtual bool PrepareValueFenced()
MagicXattrManager * xattr_mgr_
std::string GetListString(catalog::DirectoryEntry *dirent)
virtual std::string GetValue()
virtual std::string GetValue()
std::string GetActivePubkeys() const
Counter * Lookup(const std::string &name) const
virtual std::string GetValue()
virtual bool PrepareValueFenced()
void GetProxyInfo(std::vector< std::vector< ProxyInfo > > *proxy_chain, unsigned *current_group, unsigned *fallback_group)
std::string repository_tag()
catalog::ClientCatalogManager * catalog_mgr()
virtual std::string GetValue()
virtual std::string GetValue()
virtual std::string GetValue()
virtual bool PrepareValueFenced()
perf::Counter * no_open_dirs()
virtual std::string GetValue()
Failures Fetch(const std::string &base_url, const std::string &repository_name, const uint64_t minimum_timestamp, const shash::Any *base_catalog, signature::SignatureManager *signature_manager, download::DownloadManager *download_manager, ManifestEnsemble *ensemble)
virtual bool PrepareValueFenced()
zlib::Algorithms compression_algorithm() const
CacheManager * cache_mgr()
perf::Counter * no_open_files()
virtual std::string GetValue()
LinkString symlink() const
IoErrorInfo * io_error_info()
const unsigned int kMaxLogLine
download::DownloadManager * download_mgr()
virtual std::string GetValue()
virtual std::string GetValue()
string StringifyInt(const int64_t value)
virtual std::string GetValue()
virtual int Close(int fd)=0
virtual std::string GetValue()
shash::Algorithms hash_algorithm() const
perf::Counter * n_fs_dir_open()
virtual std::string GetValue()
virtual std::string GetValue()
CatalogT * GetRootCatalog() const
virtual std::string GetValue()
static BlessedObject Bless(const shash::Any &id)
MagicXattrManager(MountPoint *mountpoint, EVisibility visibility, const std::set< std::string > &protected_xattrs, const std::set< gid_t > &privileged_xattr_gids)
signature::SignatureManager * signature_mgr()
BackoffThrottle throttle_
virtual std::string GetValue()
std::string ToString() const
QuotaManager * quota_mgr()
uint64_t GetRevision() const
virtual std::string GetValue()
virtual std::string GetValue()
virtual std::string GetValue()
int GetNumCatalogs() const
virtual std::string GetValue()
bool ListFileChunks(const PathString &path, const shash::Algorithms interpret_hashes_as, FileChunkList *chunks)
virtual bool PrepareValueFenced()
std::map< std::string, BaseMagicXattr * > xattr_list_
virtual bool PrepareValueFenced()
void GetTimeout(unsigned *seconds_proxy, unsigned *seconds_direct)
virtual bool PrepareValueFenced()
virtual std::string GetValue()
catalog::Counters counters_
virtual bool PrepareValueFenced()
virtual MagicXattrFlavor GetXattrFlavor()
static std::string ListProxy(download::DownloadManager *dm)
manifest::Manifest * manifest() const
virtual std::string GetValue()
void Lock(PathString path, catalog::DirectoryEntry *dirent)
std::string GetCsvMap() const
const char * c_str() const
virtual bool PrepareValueFenced()
void GetHostInfo(std::vector< std::string > *host_chain, std::vector< int > *rtt, unsigned *current_host)
virtual std::string GetValue()
virtual int64_t Pread(int fd, void *buf, uint64_t size, uint64_t offset)=0
virtual bool PrepareValueFenced()
virtual bool PrepareValueFenced()
void SanityCheckProtectedXattrs()
shash::Any meta_info() const
virtual bool HasCapability(Capabilities capability)=0
static const uint64_t kSizeUnknown
download::DownloadManager * external_download_mgr()
virtual bool PrepareValueFenced()