aboutsummaryrefslogtreecommitdiff
path: root/src/zen
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-10-21 15:40:13 +0200
committerGitHub Enterprise <[email protected]>2024-10-21 15:40:13 +0200
commitefd016d84d0940bf616e3efef135532cbf5fedef (patch)
tree50bf249799b65af4a30c473c53bfa8b243be335e /src/zen
parent5.5.9-pre8 (diff)
downloadarchived-zen-efd016d84d0940bf616e3efef135532cbf5fedef.tar.xz
archived-zen-efd016d84d0940bf616e3efef135532cbf5fedef.zip
bucket size queries (#203)
- Feature: Added options --bucketsize and --bucketsizes to zen cache-info to get data sizes in cache buckets and attachments
Diffstat (limited to 'src/zen')
-rw-r--r--src/zen/cmds/cache_cmd.cpp35
-rw-r--r--src/zen/cmds/cache_cmd.h2
2 files changed, 37 insertions, 0 deletions
diff --git a/src/zen/cmds/cache_cmd.cpp b/src/zen/cmds/cache_cmd.cpp
index 37e7c8fd1..00099cebc 100644
--- a/src/zen/cmds/cache_cmd.cpp
+++ b/src/zen/cmds/cache_cmd.cpp
@@ -130,7 +130,15 @@ CacheInfoCommand::CacheInfoCommand()
m_Options.add_options()("h,help", "Print help");
m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value(""), "<hosturl>");
m_Options.add_option("", "n", "namespace", "Namespace name", cxxopts::value(m_NamespaceName), "<namespacename>");
+ m_Options.add_option("",
+ "",
+ "bucketsizes",
+ "Comma delimited list of bucket names to get size info from, * to get info on all buckets",
+ cxxopts::value(m_SizeInfoBucketNames),
+ "<bucketnames>");
m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), "<bucketname>");
+ m_Options.add_option("", "", "bucketsize", "Show detailed bucket size info", cxxopts::value(m_BucketSizeInfo), "<bucketsize>");
+
m_Options.parse_positional({"namespace", "bucket"});
}
@@ -157,20 +165,47 @@ CacheInfoCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
Session.SetHeader(cpr::Header{{"Accept", "application/json"}});
if (m_HostName.empty())
{
+ if (!m_SizeInfoBucketNames.empty())
+ {
+ throw zen::OptionParseException("--bucketsizes option needs a --namespace");
+ }
+ if (m_BucketSizeInfo)
+ {
+ throw zen::OptionParseException("--bucketsizes option needs a --namespace and a --bucket");
+ }
ZEN_CONSOLE("Info on cache from '{}'", m_HostName);
Session.SetUrl({fmt::format("{}/z$", m_HostName)});
}
else if (m_BucketName.empty())
{
+ if (m_BucketSizeInfo)
+ {
+ throw zen::OptionParseException("--bucketsizes option needs a --bucket");
+ }
ZEN_CONSOLE("Info on cache namespace '{}' from '{}'", m_NamespaceName, m_HostName);
Session.SetUrl({fmt::format("{}/z$/{}", m_HostName, m_NamespaceName)});
}
else
{
+ if (!m_SizeInfoBucketNames.empty())
+ {
+ throw zen::OptionParseException("--bucketsizes option can not be used together with --bucket option");
+ }
ZEN_CONSOLE("Info on cache bucket '{}/{}' from '{}'", m_NamespaceName, m_BucketName, m_HostName);
Session.SetUrl({fmt::format("{}/z$/{}/{}", m_HostName, m_NamespaceName, m_BucketName)});
}
+ cpr::Parameters Parameters;
+ if (!m_SizeInfoBucketNames.empty())
+ {
+ Parameters.Add({"bucketsizes", m_SizeInfoBucketNames});
+ }
+ if (m_BucketSizeInfo)
+ {
+ Parameters.Add({"bucketsize", "true"});
+ }
+
+ Session.SetParameters(Parameters);
cpr::Response Result = Session.Get();
if (zen::IsHttpSuccessCode(Result.status_code))
diff --git a/src/zen/cmds/cache_cmd.h b/src/zen/cmds/cache_cmd.h
index 654af8512..73702cada 100644
--- a/src/zen/cmds/cache_cmd.h
+++ b/src/zen/cmds/cache_cmd.h
@@ -34,6 +34,8 @@ private:
cxxopts::Options m_Options{"cache-info", "Info on cache, namespace or bucket"};
std::string m_HostName;
std::string m_NamespaceName;
+ std::string m_SizeInfoBucketNames;
+ bool m_BucketSizeInfo = false;
std::string m_BucketName;
};