aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/zen/authutils.cpp52
-rw-r--r--src/zen/authutils.h3
-rw-r--r--src/zen/cmds/builds_cmd.cpp5
-rw-r--r--src/zen/cmds/projectstore_cmd.cpp5
-rw-r--r--src/zencore/xmake.lua4
-rw-r--r--src/zenremotestore/builds/buildstoragecache.cpp5
-rw-r--r--src/zenremotestore/builds/buildstorageutil.cpp86
-rw-r--r--src/zenremotestore/include/zenremotestore/builds/buildstoragecache.h2
-rw-r--r--src/zenremotestore/include/zenremotestore/builds/buildstorageutil.h3
-rw-r--r--src/zenremotestore/include/zenremotestore/jupiter/jupiterhost.h2
-rw-r--r--src/zenremotestore/jupiter/jupiterhost.cpp5
-rw-r--r--src/zenremotestore/projectstore/buildsremoteprojectstore.cpp2
12 files changed, 146 insertions, 28 deletions
diff --git a/src/zen/authutils.cpp b/src/zen/authutils.cpp
index bc185535b..fdcb8e15d 100644
--- a/src/zen/authutils.cpp
+++ b/src/zen/authutils.cpp
@@ -147,7 +147,8 @@ AuthCommandLineOptions::ParseOptions(cxxopts::Options& Ops,
std::string_view HostUrl,
std::unique_ptr<AuthMgr>& Auth,
bool Quiet,
- bool Hidden)
+ bool Hidden,
+ bool Verbose)
{
auto CreateAuthMgr = [&]() {
ZEN_ASSERT(!SystemRootDir.empty());
@@ -182,6 +183,14 @@ AuthCommandLineOptions::ParseOptions(cxxopts::Options& Ops,
{
throw OptionParseException(fmt::format("'--encryption-aes-iv' ('{}') is malformed", m_EncryptionIV), Ops.help());
}
+ if (Verbose)
+ {
+ ExtendableStringBuilder<128> SB;
+ SB << "\n RootDirectory: " << AuthMgrConfig.RootDirectory.string();
+ SB << "\n EncryptionKey: " << m_EncryptionKey;
+ SB << "\n EncryptionIV: " << m_EncryptionIV;
+ ZEN_CONSOLE("Creating auth manager with:{}", SB.ToString());
+ }
Auth = AuthMgr::Create(AuthMgrConfig);
}
};
@@ -190,9 +199,18 @@ AuthCommandLineOptions::ParseOptions(cxxopts::Options& Ops,
{
CreateAuthMgr();
std::string ProviderName = m_OpenIdProviderName.empty() ? "Default" : m_OpenIdProviderName;
+ if (Verbose)
+ {
+ ExtendableStringBuilder<128> SB;
+ SB << "\n Name: " << ProviderName;
+ SB << "\n Url: " << m_OpenIdProviderUrl;
+ SB << "\n ClientId: " << m_OpenIdClientId;
+ ZEN_CONSOLE("Adding openid auth provider:{}", SB.ToString());
+ }
Auth->AddOpenIdProvider({.Name = ProviderName, .Url = m_OpenIdProviderUrl, .ClientId = m_OpenIdClientId});
if (!m_OpenIdRefreshToken.empty())
{
+ ZEN_CONSOLE("Adding open id refresh token {} to provider {}", m_OpenIdRefreshToken, ProviderName);
Auth->AddOpenIdToken({.ProviderName = ProviderName, .RefreshToken = m_OpenIdRefreshToken});
}
}
@@ -207,6 +225,10 @@ AuthCommandLineOptions::ParseOptions(cxxopts::Options& Ops,
if (!m_AccessToken.empty())
{
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Adding static auth token: {}", m_AccessToken);
+ }
ClientSettings.AccessTokenProvider = httpclientauth::CreateFromStaticToken(m_AccessToken);
}
else if (!m_AccessTokenPath.empty())
@@ -215,25 +237,49 @@ AuthCommandLineOptions::ParseOptions(cxxopts::Options& Ops,
std::string ResolvedAccessToken = ReadAccessTokenFromJsonFile(m_AccessTokenPath);
if (!ResolvedAccessToken.empty())
{
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Adding static auth token from {}: {}", m_AccessTokenPath, ResolvedAccessToken);
+ }
ClientSettings.AccessTokenProvider = httpclientauth::CreateFromStaticToken(ResolvedAccessToken);
}
}
else if (!m_OAuthUrl.empty())
{
+ if (Verbose)
+ {
+ ExtendableStringBuilder<128> SB;
+ SB << "\n Url: " << m_OAuthUrl;
+ SB << "\n ClientId: " << m_OAuthClientId;
+ SB << "\n ClientSecret: " << m_OAuthClientSecret;
+ ZEN_CONSOLE("Adding oauth provider:{}", SB.ToString());
+ }
ClientSettings.AccessTokenProvider = httpclientauth::CreateFromOAuthClientCredentials(
{.Url = m_OAuthUrl, .ClientId = m_OAuthClientId, .ClientSecret = m_OAuthClientSecret});
}
else if (!m_OpenIdProviderName.empty())
{
CreateAuthMgr();
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Using openid provider: {}", m_OpenIdProviderName);
+ }
ClientSettings.AccessTokenProvider = httpclientauth::CreateFromOpenIdProvider(*Auth, m_OpenIdProviderName);
}
else if (std::string ResolvedAccessToken = GetEnvAccessToken(m_AccessTokenEnv); !ResolvedAccessToken.empty())
{
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Using environment variable '{}' as access token '{}'", m_AccessTokenEnv, ResolvedAccessToken);
+ }
ClientSettings.AccessTokenProvider = httpclientauth::CreateFromStaticToken(ResolvedAccessToken);
}
else if (std::filesystem::path OidcTokenExePath = FindOidcTokenExePath(m_OidcTokenAuthExecutablePath); !OidcTokenExePath.empty())
{
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Running oidctoken exe from path '{}'", m_OidcTokenAuthExecutablePath);
+ }
ClientSettings.AccessTokenProvider =
httpclientauth::CreateFromOidcTokenExecutable(OidcTokenExePath, HostUrl, Quiet, m_OidcTokenUnattended, Hidden);
}
@@ -241,6 +287,10 @@ AuthCommandLineOptions::ParseOptions(cxxopts::Options& Ops,
if (!ClientSettings.AccessTokenProvider)
{
CreateAuthMgr();
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Using default openid provider");
+ }
ClientSettings.AccessTokenProvider = httpclientauth::CreateFromDefaultOpenIdProvider(*Auth);
}
}
diff --git a/src/zen/authutils.h b/src/zen/authutils.h
index 8f041c8fc..2201c3f83 100644
--- a/src/zen/authutils.h
+++ b/src/zen/authutils.h
@@ -42,7 +42,8 @@ struct AuthCommandLineOptions
std::string_view HostUrl,
std::unique_ptr<AuthMgr>& OutAuthMgr,
bool Quiet,
- bool Hidden);
+ bool Hidden,
+ bool Verbose);
};
std::string ReadAccessTokenFromJsonFile(const std::filesystem::path& Path);
diff --git a/src/zen/cmds/builds_cmd.cpp b/src/zen/cmds/builds_cmd.cpp
index 33a35156e..ab991fe6a 100644
--- a/src/zen/cmds/builds_cmd.cpp
+++ b/src/zen/cmds/builds_cmd.cpp
@@ -3010,10 +3010,11 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
m_Host.empty() ? m_OverrideHost : m_Host,
Auth,
IsQuiet,
- /*Hidden*/ false);
+ /*Hidden*/ false,
+ m_Verbose);
BuildStorageResolveResult ResolveRes =
- ResolveBuildStorage(ClientSettings, m_Host, m_OverrideHost, m_ZenCacheHost, ZenCacheResolveMode::All);
+ ResolveBuildStorage(ClientSettings, m_Host, m_OverrideHost, m_ZenCacheHost, ZenCacheResolveMode::All, m_Verbose);
if (!ResolveRes.HostUrl.empty())
{
ClientSettings.AssumeHttp2 = ResolveRes.HostAssumeHttp2;
diff --git a/src/zen/cmds/projectstore_cmd.cpp b/src/zen/cmds/projectstore_cmd.cpp
index 6cf846606..5791e6fda 100644
--- a/src/zen/cmds/projectstore_cmd.cpp
+++ b/src/zen/cmds/projectstore_cmd.cpp
@@ -2431,10 +2431,11 @@ OplogDownloadCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** a
m_OverrideHost.empty() ? m_Host : m_OverrideHost,
Auth,
m_Quiet,
- /*Hidden*/ false);
+ /*Hidden*/ false,
+ m_Verbose);
BuildStorageResolveResult ResolveRes =
- ResolveBuildStorage(ClientSettings, m_Host, m_OverrideHost, m_ZenCacheHost, ZenCacheResolveMode::Discovery);
+ ResolveBuildStorage(ClientSettings, m_Host, m_OverrideHost, m_ZenCacheHost, ZenCacheResolveMode::Discovery, m_Verbose);
BuildStorageBase::Statistics StorageStats;
diff --git a/src/zencore/xmake.lua b/src/zencore/xmake.lua
index ef462ad03..a3fd4dacb 100644
--- a/src/zencore/xmake.lua
+++ b/src/zencore/xmake.lua
@@ -37,10 +37,8 @@ target('zencore')
add_packages("json11")
- if is_plat("linux") then
+ if is_plat("linux", "macosx") then
add_packages("openssl3") -- required for crypto
- elseif is_plat("macosx") then
- add_packages("mbedtls") -- required for crypto
end
add_packages(
diff --git a/src/zenremotestore/builds/buildstoragecache.cpp b/src/zenremotestore/builds/buildstoragecache.cpp
index d7442d7c5..39f2b8373 100644
--- a/src/zenremotestore/builds/buildstoragecache.cpp
+++ b/src/zenremotestore/builds/buildstoragecache.cpp
@@ -411,14 +411,15 @@ CreateZenBuildStorageCache(HttpClient& HttpClient,
}
ZenCacheEndpointTestResult
-TestZenCacheEndpoint(std::string_view BaseUrl, const bool AssumeHttp2)
+TestZenCacheEndpoint(std::string_view BaseUrl, const bool AssumeHttp2, const bool HttpVerbose)
{
HttpClientSettings TestClientSettings{.LogCategory = "httpcacheclient",
.ConnectTimeout = std::chrono::milliseconds{1000},
.Timeout = std::chrono::milliseconds{2000},
.AssumeHttp2 = AssumeHttp2,
.AllowResume = true,
- .RetryCount = 0};
+ .RetryCount = 0,
+ .Verbose = HttpVerbose};
HttpClient TestHttpClient(BaseUrl, TestClientSettings);
HttpClient::Response TestResponse = TestHttpClient.Get("/status/builds");
if (TestResponse.IsSuccess())
diff --git a/src/zenremotestore/builds/buildstorageutil.cpp b/src/zenremotestore/builds/buildstorageutil.cpp
index 3680d1d83..3af323628 100644
--- a/src/zenremotestore/builds/buildstorageutil.cpp
+++ b/src/zenremotestore/builds/buildstorageutil.cpp
@@ -13,13 +13,31 @@
#include <zenutil/zenserverprocess.h>
namespace zen {
+namespace {
+ std::string ConnectionSettingsToString(const HttpClientSettings& ClientSettings)
+ {
+ ExtendableStringBuilder<128> SB;
+ SB << "\n LogCategory: " << ClientSettings.LogCategory;
+ SB << "\n ConnectTimeout: " << ClientSettings.ConnectTimeout.count() << " ms";
+ SB << "\n Timeout: " << ClientSettings.Timeout.count() << " ms";
+ SB << "\n AccessTokenProvider: " << ClientSettings.AccessTokenProvider.has_value();
+ SB << "\n AssumeHttp2: " << ClientSettings.AssumeHttp2;
+ SB << "\n AllowResume: " << ClientSettings.AllowResume;
+ SB << "\n RetryCount: " << ClientSettings.RetryCount;
+ SB << "\n SessionId: " << ClientSettings.SessionId.ToString();
+ SB << "\n Verbose: " << ClientSettings.Verbose;
+ SB << "\n MaximumInMemoryDownloadSize: " << ClientSettings.MaximumInMemoryDownloadSize;
+ return SB.ToString();
+ }
+} // namespace
BuildStorageResolveResult
ResolveBuildStorage(const HttpClientSettings& ClientSettings,
std::string_view Host,
std::string_view OverrideHost,
std::string_view ZenCacheHost,
- ZenCacheResolveMode ZenResolveMode)
+ ZenCacheResolveMode ZenResolveMode,
+ bool Verbose)
{
bool AllowZenCacheDiscovery = ZenResolveMode == ZenCacheResolveMode::Discovery || ZenResolveMode == ZenCacheResolveMode::All;
bool AllowLocalZenCache = ZenResolveMode == ZenCacheResolveMode::LocalHost || ZenResolveMode == ZenCacheResolveMode::All;
@@ -55,13 +73,29 @@ ResolveBuildStorage(const HttpClientSettings& ClientSettings,
if (OverrideHost.empty() || (ZenCacheHost.empty() && AllowZenCacheDiscovery))
{
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Querying servers at '{}/api/v1/status/servers'\n Connection settings:{}",
+ DiscoveryHost,
+ ConnectionSettingsToString(ClientSettings));
+ }
+
DiscoveryResponse = DiscoverJupiterEndpoints(DiscoveryHost, ClientSettings);
}
if (!OverrideHost.empty())
{
- if (JupiterEndpointTestResult TestResult = TestJupiterEndpoint(OverrideHost, HostAssumeHttp2); TestResult.Success)
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Testing server endpoint at '{}/health/live'. Assume http2: {}", OverrideHost, HostAssumeHttp2);
+ }
+ if (JupiterEndpointTestResult TestResult = TestJupiterEndpoint(OverrideHost, HostAssumeHttp2, ClientSettings.Verbose);
+ TestResult.Success)
{
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Server endpoint at '{}/api/v1/status/servers' succeeded", OverrideHost);
+ }
HostUrl = OverrideHost;
HostName = GetHostNameFromUrl(OverrideHost);
}
@@ -81,9 +115,19 @@ ResolveBuildStorage(const HttpClientSettings& ClientSettings,
{
if (!ServerEndpoint.BaseUrl.empty())
{
- if (JupiterEndpointTestResult TestResult = TestJupiterEndpoint(ServerEndpoint.BaseUrl, ServerEndpoint.AssumeHttp2);
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Testing server endpoint at '{}/health/live'. Assume http2: {}",
+ ServerEndpoint.BaseUrl,
+ ServerEndpoint.AssumeHttp2);
+ }
+
+ if (JupiterEndpointTestResult TestResult =
+ TestJupiterEndpoint(ServerEndpoint.BaseUrl, ServerEndpoint.AssumeHttp2, ClientSettings.Verbose);
TestResult.Success)
{
+ ZEN_CONSOLE("Server endpoint at '{}/api/v1/status/servers' succeeded", ServerEndpoint.BaseUrl);
+
HostUrl = ServerEndpoint.BaseUrl;
HostAssumeHttp2 = ServerEndpoint.AssumeHttp2;
HostName = ServerEndpoint.Name;
@@ -110,9 +154,19 @@ ResolveBuildStorage(const HttpClientSettings& ClientSettings,
{
if (!CacheEndpoint.BaseUrl.empty())
{
- if (ZenCacheEndpointTestResult TestResult = TestZenCacheEndpoint(CacheEndpoint.BaseUrl, CacheEndpoint.AssumeHttp2);
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Testing cache endpoint at '{}/status/builds'. Assume http2: {}",
+ CacheEndpoint.BaseUrl,
+ CacheEndpoint.AssumeHttp2);
+ }
+
+ if (ZenCacheEndpointTestResult TestResult =
+ TestZenCacheEndpoint(CacheEndpoint.BaseUrl, CacheEndpoint.AssumeHttp2, ClientSettings.Verbose);
TestResult.Success)
{
+ ZEN_CONSOLE("Cache endpoint at '{}/status/builds' succeeded", CacheEndpoint.BaseUrl);
+
CacheUrl = CacheEndpoint.BaseUrl;
CacheAssumeHttp2 = CacheEndpoint.AssumeHttp2;
CacheName = CacheEndpoint.Name;
@@ -130,7 +184,9 @@ ResolveBuildStorage(const HttpClientSettings& ClientSettings,
if (CacheUrl.empty())
{
std::string ZenServerLocalHostUrl = fmt::format("http://127.0.0.1:{}", Entry.EffectiveListenPort.load());
- if (ZenCacheEndpointTestResult TestResult = TestZenCacheEndpoint(ZenServerLocalHostUrl, false); TestResult.Success)
+ if (ZenCacheEndpointTestResult TestResult =
+ TestZenCacheEndpoint(ZenServerLocalHostUrl, /*AssumeHttp2*/ false, ClientSettings.Verbose);
+ TestResult.Success)
{
CacheUrl = ZenServerLocalHostUrl;
CacheAssumeHttp2 = false;
@@ -141,14 +197,22 @@ ResolveBuildStorage(const HttpClientSettings& ClientSettings,
}
}
}
- else if (ZenCacheEndpointTestResult TestResult = TestZenCacheEndpoint(ZenCacheHost, false); TestResult.Success)
- {
- CacheUrl = ZenCacheHost;
- CacheName = GetHostNameFromUrl(ZenCacheHost);
- }
else
{
- ZEN_WARN("Unable to reach cache host {}. Reason: {}", ZenCacheHost, TestResult.FailureReason);
+ if (Verbose)
+ {
+ ZEN_CONSOLE("Testing cache endpoint at '{}/status/builds'. Assume http2: {}", ZenCacheHost, false);
+ }
+ if (ZenCacheEndpointTestResult TestResult = TestZenCacheEndpoint(ZenCacheHost, /*AssumeHttp2*/ false, ClientSettings.Verbose);
+ TestResult.Success)
+ {
+ CacheUrl = ZenCacheHost;
+ CacheName = GetHostNameFromUrl(ZenCacheHost);
+ }
+ else
+ {
+ ZEN_WARN("Unable to reach cache host {}. Reason: {}", ZenCacheHost, TestResult.FailureReason);
+ }
}
return BuildStorageResolveResult{.HostUrl = HostUrl,
diff --git a/src/zenremotestore/include/zenremotestore/builds/buildstoragecache.h b/src/zenremotestore/include/zenremotestore/builds/buildstoragecache.h
index f1916da10..bb5b1c5f4 100644
--- a/src/zenremotestore/include/zenremotestore/builds/buildstoragecache.h
+++ b/src/zenremotestore/include/zenremotestore/builds/buildstoragecache.h
@@ -67,6 +67,6 @@ struct ZenCacheEndpointTestResult
std::string FailureReason;
};
-ZenCacheEndpointTestResult TestZenCacheEndpoint(std::string_view BaseUrl, const bool AssumeHttp2);
+ZenCacheEndpointTestResult TestZenCacheEndpoint(std::string_view BaseUrl, const bool AssumeHttp2, const bool HttpVerbose);
} // namespace zen
diff --git a/src/zenremotestore/include/zenremotestore/builds/buildstorageutil.h b/src/zenremotestore/include/zenremotestore/builds/buildstorageutil.h
index 3816822be..7ac1f78d4 100644
--- a/src/zenremotestore/include/zenremotestore/builds/buildstorageutil.h
+++ b/src/zenremotestore/include/zenremotestore/builds/buildstorageutil.h
@@ -35,7 +35,8 @@ BuildStorageResolveResult ResolveBuildStorage(const HttpClientSettings& ClientSe
std::string_view Host,
std::string_view OverrideHost,
std::string_view ZenCacheHost,
- ZenCacheResolveMode ZenResolveMode);
+ ZenCacheResolveMode ZenResolveMode,
+ bool Verbose);
std::vector<ChunkBlockDescription> GetBlockDescriptions(OperationLogOutput& Output,
BuildStorageBase& Storage,
diff --git a/src/zenremotestore/include/zenremotestore/jupiter/jupiterhost.h b/src/zenremotestore/include/zenremotestore/jupiter/jupiterhost.h
index 3bbc700b8..432496bc1 100644
--- a/src/zenremotestore/include/zenremotestore/jupiter/jupiterhost.h
+++ b/src/zenremotestore/include/zenremotestore/jupiter/jupiterhost.h
@@ -30,6 +30,6 @@ struct JupiterEndpointTestResult
std::string FailureReason;
};
-JupiterEndpointTestResult TestJupiterEndpoint(std::string_view BaseUrl, const bool AssumeHttp2);
+JupiterEndpointTestResult TestJupiterEndpoint(std::string_view BaseUrl, const bool AssumeHttp2, const bool HttpVerbose);
} // namespace zen
diff --git a/src/zenremotestore/jupiter/jupiterhost.cpp b/src/zenremotestore/jupiter/jupiterhost.cpp
index 01728f38d..6b13d69a5 100644
--- a/src/zenremotestore/jupiter/jupiterhost.cpp
+++ b/src/zenremotestore/jupiter/jupiterhost.cpp
@@ -45,14 +45,15 @@ DiscoverJupiterEndpoints(std::string_view Host, const HttpClientSettings& Client
}
JupiterEndpointTestResult
-TestJupiterEndpoint(std::string_view BaseUrl, const bool AssumeHttp2)
+TestJupiterEndpoint(std::string_view BaseUrl, const bool AssumeHttp2, const bool HttpVerbose)
{
HttpClientSettings TestClientSettings{.LogCategory = "httpbuildsclient",
.ConnectTimeout = std::chrono::milliseconds{1000},
.Timeout = std::chrono::milliseconds{2000},
.AssumeHttp2 = AssumeHttp2,
.AllowResume = true,
- .RetryCount = 0};
+ .RetryCount = 0,
+ .Verbose = HttpVerbose};
HttpClient TestHttpClient(BaseUrl, TestClientSettings);
HttpClient::Response TestResponse = TestHttpClient.Get("/health/live");
diff --git a/src/zenremotestore/projectstore/buildsremoteprojectstore.cpp b/src/zenremotestore/projectstore/buildsremoteprojectstore.cpp
index 09ffc5d71..db2192a49 100644
--- a/src/zenremotestore/projectstore/buildsremoteprojectstore.cpp
+++ b/src/zenremotestore/projectstore/buildsremoteprojectstore.cpp
@@ -665,7 +665,7 @@ CreateJupiterBuildsRemoteStore(LoggerRef InLog,
.AllowResume = true,
.RetryCount = 2};
- ResolveRes = ResolveBuildStorage(ClientSettings, Host, OverrideUrl, ZenHost, ZenCacheResolveMode::Discovery);
+ ResolveRes = ResolveBuildStorage(ClientSettings, Host, OverrideUrl, ZenHost, ZenCacheResolveMode::Discovery, /*Verbose*/ false);
}
HttpClientSettings ClientSettings{.LogCategory = "httpbuildsclient",