aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver
diff options
context:
space:
mode:
authorZousar Shaker <[email protected]>2026-03-20 05:45:44 -0600
committerGitHub Enterprise <[email protected]>2026-03-20 12:45:44 +0100
commitd44a692aaeb6f78e8cf7520236b21977333fa3c3 (patch)
treeb8ae4ae8b2e6b51ae6fee2123424e2abd7cebb74 /src/zenserver
parentZen disk benchmark utility (#868) (diff)
downloadzen-d44a692aaeb6f78e8cf7520236b21977333fa3c3.tar.xz
zen-d44a692aaeb6f78e8cf7520236b21977333fa3c3.zip
Zs/consul token (#870)
- Feature: Added support for consul token passed via environment variable, and specified a default env var name of CONSUL_HTTP_TOKEN for it in hub mode
Diffstat (limited to 'src/zenserver')
-rw-r--r--src/zenserver/hub/zenhubserver.cpp32
-rw-r--r--src/zenserver/hub/zenhubserver.h1
2 files changed, 32 insertions, 1 deletions
diff --git a/src/zenserver/hub/zenhubserver.cpp b/src/zenserver/hub/zenhubserver.cpp
index 7bced2809..45a3211b2 100644
--- a/src/zenserver/hub/zenhubserver.cpp
+++ b/src/zenserver/hub/zenhubserver.cpp
@@ -23,6 +23,13 @@ ZEN_THIRD_PARTY_INCLUDES_END
namespace zen {
+const std::string&
+GetDefaultConsulTokenEnvVariableName()
+{
+ static const std::string Name = "CONSUL_HTTP_TOKEN";
+ return Name;
+}
+
void
ZenHubServerConfigurator::AddCliOptions(cxxopts::Options& Options)
{
@@ -58,6 +65,14 @@ ZenHubServerConfigurator::AddCliOptions(cxxopts::Options& Options)
Options.add_option("hub",
"",
+ "consul-token-env",
+ fmt::format("Name of environment variable that holds the consul access token (defaults to '{}')",
+ GetDefaultConsulTokenEnvVariableName()),
+ cxxopts::value<std::string>(m_ServerOptions.ConsulTokenEnv)->default_value(""),
+ "<envvariable>");
+
+ Options.add_option("hub",
+ "",
"hub-base-port-number",
"Base port number for provisioned instances",
cxxopts::value<uint16_t>(m_ServerOptions.HubBasePortNumber)->default_value("21000"),
@@ -342,9 +357,24 @@ ZenHubServer::InitializeConsulRegistration(const ZenHubServerConfig& ServerConfi
ZEN_INFO("Initializing Consul registration with endpoint: {}", ServerConfig.ConsulEndpoint);
+ std::string ConsulAccessTokenEnvName =
+ ServerConfig.ConsulTokenEnv.empty() ? GetDefaultConsulTokenEnvVariableName() : ServerConfig.ConsulTokenEnv;
+ std::string ConsulAccessToken = GetEnvVariable(ConsulAccessTokenEnvName);
+ if (ConsulAccessToken.empty())
+ {
+ if (!ServerConfig.ConsulTokenEnv.empty())
+ {
+ ZEN_WARN("Consul token environment variable '{}' is not set or empty", ServerConfig.ConsulTokenEnv);
+ }
+ }
+ else
+ {
+ ZEN_INFO("Consul token read from environment variable '{}'", ConsulAccessTokenEnvName);
+ }
+
try
{
- m_ConsulClient = std::make_unique<consul::ConsulClient>(ServerConfig.ConsulEndpoint);
+ m_ConsulClient = std::make_unique<consul::ConsulClient>(ServerConfig.ConsulEndpoint, ConsulAccessToken);
consul::ServiceRegistrationInfo Info;
Info.ServiceId = fmt::format("zen-hub-{}", ServerConfig.InstanceId);
diff --git a/src/zenserver/hub/zenhubserver.h b/src/zenserver/hub/zenhubserver.h
index 15efeaec9..33d813122 100644
--- a/src/zenserver/hub/zenhubserver.h
+++ b/src/zenserver/hub/zenhubserver.h
@@ -24,6 +24,7 @@ struct ZenHubServerConfig : public ZenServerConfig
std::string UpstreamNotificationEndpoint;
std::string InstanceId; // For use in notifications
std::string ConsulEndpoint; // If set, enables Consul service registration
+ std::string ConsulTokenEnv; // Environment variable name to read a Consul token from; defaults to CONSUL_HTTP_TOKEN if empty
uint16_t HubBasePortNumber = 21000;
int HubInstanceLimit = 1000;
bool HubUseJobObject = true;