From 5bbca1c180bd40544ba0fee3d699202e81aa9da1 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Tue, 17 Aug 2021 22:14:28 +0200 Subject: added 'zen drop' command to drop cache buckets online also cleaned up the server side implementation a bit --- zen/cmds/cache.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 zen/cmds/cache.cpp (limited to 'zen/cmds/cache.cpp') diff --git a/zen/cmds/cache.cpp b/zen/cmds/cache.cpp new file mode 100644 index 000000000..9a2591ded --- /dev/null +++ b/zen/cmds/cache.cpp @@ -0,0 +1,66 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "cache.h" + +#include +#include + +#include +#include + +// cpr //////////////////////////////////////////////////////////////////// +// +// For some reason, these don't seem to stick, so we disable the warnings +//# define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING 1 +//# define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS 1 +#pragma warning(push) +#pragma warning(disable : 4004) +#pragma warning(disable : 4996) +#include +#pragma warning(pop) + +using namespace fmt::literals; + +DropCommand::DropCommand() +{ + m_Options.add_options()("h,help", "Print help"); + m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), ""); + m_Options.add_option("", "", "positional", "Positional arguments", cxxopts::value(m_Positional), ""); +} + +DropCommand::~DropCommand() = default; + +int +DropCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) +{ + ZEN_UNUSED(GlobalOptions, argc, argv); + + m_Options.parse_positional({"bucket", "positional"}); + m_Options.parse(argc, argv); + + spdlog::info("Dropping cache bucket '{}' from '{}'", m_BucketName, m_HostName); + + cpr::Session Session; + Session.SetUrl({"{}/z$/{}"_format(m_HostName, m_BucketName)}); + cpr::Response Result = Session.Delete(); + + if (Result.status_code >= 200 && Result.status_code < 300) + { + spdlog::info("OK: dropped cache bucket '{}' from '{}'", m_BucketName, m_HostName); + + return 0; + } + + if (Result.status_code) + { + spdlog::error("Drop failed: {}: {} ({})", Result.status_code, Result.reason, Result.text); + } + else + { + spdlog::error("Drop failed: {}", Result.error.message); + } + + return 1; +} -- cgit v1.2.3