diff --git a/src/agent.cc b/src/agent.cc index 14fdae8e..546dc638 100644 --- a/src/agent.cc +++ b/src/agent.cc @@ -30,8 +30,8 @@ MetadataAgent::~MetadataAgent() {} void MetadataAgent::Start() { metadata_api_server_.reset(new MetadataApiServer( - config_, &health_checker_, store_, config_.MetadataApiNumThreads(), "0.0.0.0", - config_.MetadataApiPort())); + config_, &health_checker_, store_, config_.MetadataApiNumThreads(), + config_.MetadataApiBindAddress(), config_.MetadataApiPort())); reporter_.reset(new MetadataReporter( config_, &store_, config_.MetadataReporterIntervalSeconds())); } diff --git a/src/configuration.cc b/src/configuration.cc index e6f37a54..42c38d29 100644 --- a/src/configuration.cc +++ b/src/configuration.cc @@ -41,6 +41,7 @@ constexpr const char kDefaultProjectId[] = ""; constexpr const char kDefaultCredentialsFile[] = ""; constexpr const int kMetadataApiDefaultNumThreads = 3; constexpr const int kMetadataApiDefaultPort = 8000; +constexpr const char kMetadataApiDefaultBindAddress[] = "0.0.0.0"; constexpr const char kMetadataApiDefaultResourceTypeSeparator[] = "."; constexpr const int kMetadataReporterDefaultIntervalSeconds = 60; constexpr const int kMetadataReporterDefaultPurgeDeleted = false; @@ -85,6 +86,7 @@ Configuration::Configuration() verbose_logging_(false), metadata_api_num_threads_(kMetadataApiDefaultNumThreads), metadata_api_port_(kMetadataApiDefaultPort), + metadata_api_bind_address_(kMetadataApiDefaultBindAddress), metadata_api_resource_type_separator_( kMetadataApiDefaultResourceTypeSeparator), metadata_reporter_interval_seconds_( @@ -222,6 +224,9 @@ void Configuration::ParseConfiguration(std::istream& input) { config["MetadataApiNumThreads"].as(metadata_api_num_threads_); metadata_api_port_ = config["MetadataApiPort"].as(metadata_api_port_); + metadata_api_bind_address_ = + config["MetadataApiBindAddress"].as( + metadata_api_bind_address_); metadata_api_resource_type_separator_ = config["MetadataApiResourceTypeSeparator"].as( metadata_api_resource_type_separator_); diff --git a/src/configuration.h b/src/configuration.h index 099d767b..0ed2a407 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -52,6 +52,10 @@ class Configuration { std::lock_guard lock(mutex_); return metadata_api_port_; } + const std::string& MetadataApiBindAddress() const { + std::lock_guard lock(mutex_); + return metadata_api_bind_address_; + } const std::string& MetadataApiResourceTypeSeparator() const { std::lock_guard lock(mutex_); return metadata_api_resource_type_separator_; @@ -186,6 +190,7 @@ class Configuration { bool verbose_logging_; int metadata_api_num_threads_; int metadata_api_port_; + std::string metadata_api_bind_address_; std::string metadata_api_resource_type_separator_; int metadata_reporter_interval_seconds_; bool metadata_reporter_purge_deleted_; diff --git a/test/configuration_unittest.cc b/test/configuration_unittest.cc index e755cb36..e47e34a4 100644 --- a/test/configuration_unittest.cc +++ b/test/configuration_unittest.cc @@ -9,6 +9,7 @@ void VerifyDefaultConfig(const Configuration& config) { EXPECT_EQ("", config.CredentialsFile()); EXPECT_EQ(3, config.MetadataApiNumThreads()); EXPECT_EQ(8000, config.MetadataApiPort()); + EXPECT_EQ("0.0.0.0", config.MetadataApiBindAddress()); EXPECT_EQ(".", config.MetadataApiResourceTypeSeparator()); EXPECT_EQ(60, config.MetadataReporterIntervalSeconds()); EXPECT_EQ(false, config.MetadataReporterPurgeDeleted());