blob: 98425d48d832d353dc9186857fa275c040c781ab [file] [log] [blame]
Deepak Kodihalli682326a2017-03-06 05:26:53 -06001#include "config.h"
Patrick Venturef18bf832018-10-26 18:14:00 -07002
Deepak Kodihalli682326a2017-03-06 05:26:53 -06003#include "elog_meta.hpp"
4
5namespace phosphor
6{
7namespace logging
8{
9namespace metadata
10{
11namespace associations
12{
13
14#if defined PROCESS_META
15
16template <>
Patrick Venturef18bf832018-10-26 18:14:00 -070017void build<xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH>(
18 const std::string& match, const std::vector<std::string>& data,
Deepak Kodihalli682326a2017-03-06 05:26:53 -060019 AssociationList& list)
20{
21 std::map<std::string, std::string> metadata;
22 parse(data, metadata);
23 auto iter = metadata.find(match);
Patrick Venturef18bf832018-10-26 18:14:00 -070024 if (metadata.end() != iter)
Deepak Kodihalli682326a2017-03-06 05:26:53 -060025 {
Patrick Venturef18bf832018-10-26 18:14:00 -070026 auto comp = [](const auto& first, const auto& second) {
Deepak Kodihalli682326a2017-03-06 05:26:53 -060027 return (strcmp(std::get<0>(first), second) < 0);
28 };
Patrick Venturef18bf832018-10-26 18:14:00 -070029 auto callout = std::lower_bound(callouts.begin(), callouts.end(),
30 (iter->second).c_str(), comp);
31 if ((callouts.end() != callout) &&
32 !strcmp((iter->second).c_str(), std::get<0>(*callout)))
Deepak Kodihalli682326a2017-03-06 05:26:53 -060033 {
Patrick Venturef18bf832018-10-26 18:14:00 -070034 list.emplace_back(std::make_tuple(
35 CALLOUT_FWD_ASSOCIATION, CALLOUT_REV_ASSOCIATION,
36 std::string(INVENTORY_ROOT) + std::get<1>(*callout)));
Deepak Kodihalli682326a2017-03-06 05:26:53 -060037 }
38 }
39}
40
Tom Joseph213aaf62017-07-25 00:02:09 +053041template <>
Patrick Venturef18bf832018-10-26 18:14:00 -070042void build<
43 xyz::openbmc_project::Common::Callout::Inventory::CALLOUT_INVENTORY_PATH>(
44 const std::string& match, const std::vector<std::string>& data,
Tom Joseph213aaf62017-07-25 00:02:09 +053045 AssociationList& list)
46{
47 std::map<std::string, std::string> metadata;
48 parse(data, metadata);
49 auto iter = metadata.find(match);
50 if (metadata.end() != iter)
51 {
52 list.emplace_back(std::make_tuple(CALLOUT_FWD_ASSOCIATION,
53 CALLOUT_REV_ASSOCIATION,
54 std::string(iter->second.c_str())));
55 }
56}
57
Deepak Kodihalli682326a2017-03-06 05:26:53 -060058#endif
59
60} // namespace associations
61} // namespace metadata
62} // namespace logging
63} // namespace phosphor