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),
     };