diff options
| author | Zousar Shaker <[email protected]> | 2026-03-20 05:45:44 -0600 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-03-20 12:45:44 +0100 |
| commit | d44a692aaeb6f78e8cf7520236b21977333fa3c3 (patch) | |
| tree | b8ae4ae8b2e6b51ae6fee2123424e2abd7cebb74 /src/zenserver | |
| parent | Zen disk benchmark utility (#868) (diff) | |
| download | zen-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.cpp | 32 | ||||
| -rw-r--r-- | src/zenserver/hub/zenhubserver.h | 1 |
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; |