blob: fade0b8722f1a0cc36ea395f577f130acd3c2020 [file]
#include "tlbmc/store/factory.h"
#include <cstddef>
#include <memory>
#include <utility>
#include <vector>
#include "one/offline_node_entities.pb.h"
#include "absl/log/log.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "g3/macros.h"
#include <nlohmann/json_fwd.hpp>
#include "tlbmc/collector/gpio_collector.h"
#include "tlbmc/configs/entity_config.h"
#include "tlbmc/configs/entity_config_json_impl.h"
#include "fru.pb.h"
namespace milotic_tlbmc {
using ::production_msv::node_entities_proto::OfflineNodeEntityInformation;
absl::Status EntityConfigReaderImpl::LoadEntityConfig(
absl::string_view config_location,
absl::string_view offline_node_entities_path) {
absl::StatusOr<OfflineNodeEntityInformation> parsed_offline_node_entities =
EntityConfigJsonImpl::ParseOfflineNodeEntities(
offline_node_entities_path);
if (!parsed_offline_node_entities.ok()) {
LOG(WARNING) << "Could not read OfflineNodeEntities information from "
<< offline_node_entities_path << ": "
<< parsed_offline_node_entities.status().message();
} else {
offline_node_entities_ = *parsed_offline_node_entities;
}
ECCLESIA_ASSIGN_OR_RETURN(
config_list_,
EntityConfigJsonImpl::ParseJsonFilesIntoConfigList(config_location));
return absl::OkStatus();
}
absl::StatusOr<std::unique_ptr<EntityConfig>>
EntityConfigReaderImpl::CreateEntityConfig(const RawFruTable& fru_table,
size_t ad_hoc_fru_count,
bool enable_deterministic_bmc,
GpioCollector* gpio_collector,
bool enable_hft_test_sensor) {
return EntityConfigJsonImpl::Create(
std::move(config_list_), std::move(offline_node_entities_), fru_table,
ad_hoc_fru_count, enable_deterministic_bmc, gpio_collector,
enable_hft_test_sensor);
}
const std::vector<nlohmann::json>& EntityConfigReaderImpl::GetConfig() const {
return config_list_;
}
const OfflineNodeEntityInformation&
EntityConfigReaderImpl::GetOfflineNodeEntities() const {
return offline_node_entities_;
}
} // namespace milotic_tlbmc