Integrate with tlbmc config bundle
Tested on tlbmc enabled machines and disabled machines
https://paste.googleplex.com/4531302321356800
Change-Id: Id6ee45057ef75f013fd129f99727776f86a35c44
Signed-off-by: Nan Zhou <nanzhou@google.com>
diff --git a/include/webserver_main_setup.hpp b/include/webserver_main_setup.hpp
index 6f77429..6713886 100644
--- a/include/webserver_main_setup.hpp
+++ b/include/webserver_main_setup.hpp
@@ -96,10 +96,6 @@
ABSL_FLAG(bool, enable_fast_sanity, enableFastSanity, "Enable Fast-Sanity features");
ABSL_FLAG(std::string, entity_config_location, entityConfigLocation,
"Entity configuration location.");
-ABSL_FLAG(bool, tlbmc_allow_sensor_creation_failure, tlbmcAllowSensorCreationFailure,
- "If tlBMC is enabled, then cause sensor creation failure to be fatal. ");
-ABSL_FLAG(std::string, tlbmc_disable_file, "/var/google/tlbmc/disable_tlbmc",
- "Disable tlBMC on disasters");
#endif // BMCWEB_ENABLE_GRPC
@@ -160,6 +156,17 @@
{
#ifdef BMCWEB_ENABLE_GRPC
absl::InitializeLog();
+ milotic::RedfishServiceConfig secure_service_config{
+ .port = absl::GetFlag(FLAGS_mtls_grpc_port),
+ .tlbmc_entity_config_location = absl::GetFlag(FLAGS_entity_config_location),
+ .multi_thread_get = absl::GetFlag(FLAGS_multi_thread_get),
+ .enable_tlbmc = absl::GetFlag(FLAGS_enable_tlbmc),
+ .generate_testing_events = absl::GetFlag(FLAGS_testing_events),
+ .enable_fast_sanity = absl::GetFlag(FLAGS_enable_fast_sanity),
+ .enable_tlbmc_trace = absl::GetFlag(FLAGS_enable_tlbmc_trace),
+ };
+ std::unique_ptr<milotic_tlbmc::RedfishApp> tlbmc_app = milotic::GrpcRedfishService::CreateTlbmcApp(secure_service_config);
+
auto crowLogLevel = crow::LogLevel::Debug;
crow::Logger::setLogLevel(crowLogLevel);
@@ -193,62 +200,6 @@
#else
crow::Logger::setLogLevel(crow::LogLevel::Debug);
#endif
-
- // This has to be outside the ifdef because its used in app
- // Regardless of whether it is initialized.
- std::unique_ptr<milotic_tlbmc::RedfishApp> tlbmc_app = nullptr;
-#ifdef BMCWEB_ENABLE_GRPC
- // Initialize tlbmc
- milotic_tlbmc::InitializeTlbmcConfig(
- {.allow_sensor_creation_failure =
- absl::GetFlag(FLAGS_tlbmc_allow_sensor_creation_failure)});
- LOG(WARNING)
- << "Tlbmc Config Settings: allow_dangling_frus: "
- << milotic_tlbmc::GetTlbmcConfig().allow_dangling_frus
- << " allow_sensor_creation_failure: "
- << milotic_tlbmc::GetTlbmcConfig().allow_sensor_creation_failure;
- if (absl::GetFlag(FLAGS_enable_tlbmc_trace))
- {
- milotic_tlbmc::Tracer::Initialize(true);
- }
- milotic_tlbmc::I2cSysfs i2c_sysfs(milotic_tlbmc::I2cSysfsConfig{});
- std::unique_ptr<milotic_tlbmc::FruScannerI2c> fru_scanner =
- milotic_tlbmc::FruScannerI2c::Create({});
- bool enable_tlbmc = absl::GetFlag(FLAGS_enable_tlbmc);
- std::string disable_tlbmc_file_path = absl::GetFlag(FLAGS_tlbmc_disable_file);
- if (std::filesystem::exists(disable_tlbmc_file_path)) {
- LOG(WARNING) << "Forcefully disable tlbmc";
- enable_tlbmc = false;
- }
- if (enable_tlbmc)
- {
- milotic_tlbmc::StoreImpl::Options options;
- options.fru_scanners = {fru_scanner.get()};
- options.i2c_sysfs = &i2c_sysfs;
- options.config_location = absl::GetFlag(FLAGS_entity_config_location);
-
- milotic_tlbmc::SharedMemoryServer::Initialize();
-
- absl::StatusOr<std::unique_ptr<milotic_tlbmc::StoreImpl>> tlbmc_store =
- milotic_tlbmc::StoreImpl::Create(options);
- if (tlbmc_store.ok())
- {
- tlbmc_app = std::make_unique<milotic_tlbmc::RedfishApp>(
- std::move(*tlbmc_store));
- milotic_tlbmc::RegisterAllRoutes(*tlbmc_app);
- tlbmc_app->Validate();
- }
- else
- {
- LOG(ERROR) << "Cannot create tlBMC store!! Error: "
- << tlbmc_store.status() << " - Disabling tlBMC.";
- tlbmc_app = nullptr;
- enable_tlbmc = false;
- }
- }
- LOG(WARNING) << "tlbmc enabled: " << (enable_tlbmc ? "true" : "false");
-#endif
-
auto io = std::make_shared<boost::asio::io_context>();
bool allowSessionEmpty = false;
#ifdef BMCWEB_INSECURE_DISABLE_AUTHX
@@ -496,8 +447,6 @@
using ::milotic::GrpcRedfishService;
using ::milotic::RedfishServiceConfig;
- bool generate_testing_events = absl::GetFlag(FLAGS_testing_events);
-
if (enableRedfishEvents)
{
BMCWEB_LOG_ALWAYS << "Redfish events enabled\n";
@@ -529,22 +478,6 @@
systemBusPtr.get());
#ifdef BMCWEB_ENABLE_GRPC
- bool multi_thread_get = absl::GetFlag(FLAGS_multi_thread_get);
- LOG(WARNING) << "multi_thread_get enabled: " <<
- (multi_thread_get ? "true" : "false");
-
- RedfishServiceConfig secure_service_config{
- .port = absl::GetFlag(FLAGS_mtls_grpc_port),
- .multi_thread_get = multi_thread_get,
- .enable_tlbmc = enable_tlbmc,
- .generate_testing_events = generate_testing_events,
- .enable_fast_sanity = absl::GetFlag(FLAGS_enable_fast_sanity),
- };
-#ifdef ENABLE_LOAS3_VALIDATION
- secure_service_config.check_loas3_policy = true;
- LOG(WARNING) << "check_loas3_policy is enabled";
-#endif
-
GrpcRedfishService grpc_service(&app, tlbmc_app.get(), io,
io_worker_threads, secure_service_config,
subscriptionService.get());
@@ -554,8 +487,9 @@
RedfishServiceConfig insecure_config{
.port = absl::GetFlag(FLAGS_insecure_grpc_port),
.self_signed_key_cert_path = "/var/volatile/self_signed_key_cert2.pem",
- .multi_thread_get = multi_thread_get,
- .enable_tlbmc = enable_tlbmc,
+ .tlbmc_entity_config_location = absl::GetFlag(FLAGS_entity_config_location),
+ .multi_thread_get = absl::GetFlag(FLAGS_multi_thread_get),
+ .enable_tlbmc = absl::GetFlag(FLAGS_enable_tlbmc),
.enable_insecure_server = true,
.enable_fast_sanity = absl::GetFlag(FLAGS_enable_fast_sanity),
};