3
3
#include " elog_serialize.hpp"
4
4
5
5
#include < cereal/archives/binary.hpp>
6
+ #include < cereal/types/map.hpp>
6
7
#include < cereal/types/string.hpp>
7
8
#include < cereal/types/tuple.hpp>
8
9
#include < cereal/types/vector.hpp>
@@ -30,7 +31,7 @@ namespace logging
30
31
template <class Archive >
31
32
void save (Archive& a, const Entry& e, const std::uint32_t /* version*/ )
32
33
{
33
- a (e.id (), e.severity (), e.timestamp (), e.message (), e.additionalData (),
34
+ a (e.id (), e.severity (), e.timestamp (), e.message (), e.additionalData2 (),
34
35
e.associations (), e.resolved (), e.version (), e.updateTimestamp (),
35
36
e.eventId (), e.resolution ());
36
37
}
@@ -51,7 +52,7 @@ void load(Archive& a, Entry& e, const std::uint32_t version)
51
52
Entry::Level severity{};
52
53
uint64_t timestamp{};
53
54
std::string message{};
54
- std::vector< std::string> additionalData{};
55
+ std::map<std::string, std::string> additionalData{};
55
56
bool resolved{};
56
57
AssociationList associations{};
57
58
std::string fwVersion{};
@@ -61,25 +62,41 @@ void load(Archive& a, Entry& e, const std::uint32_t version)
61
62
62
63
if (version < std::stoul (FIRST_CEREAL_CLASS_VERSION_WITH_FWLEVEL))
63
64
{
64
- a (id, severity, timestamp, message, additionalData, associations,
65
+ std::vector<std::string> additionalData_old{};
66
+ a (id, severity, timestamp, message, additionalData_old, associations,
65
67
resolved);
66
68
updateTimestamp = timestamp;
69
+ additionalData = util::additional_data::parse (additionalData_old);
67
70
}
68
71
else if (version < std::stoul (FIRST_CEREAL_CLASS_VERSION_WITH_UPDATE_TS))
69
72
{
70
- a (id, severity, timestamp, message, additionalData, associations,
73
+ std::vector<std::string> additionalData_old{};
74
+ a (id, severity, timestamp, message, additionalData_old, associations,
71
75
resolved, fwVersion);
72
76
updateTimestamp = timestamp;
77
+ additionalData = util::additional_data::parse (additionalData_old);
73
78
}
74
79
else if (version < std::stoul (FIRST_CEREAL_CLASS_VERSION_WITH_EVENTID))
75
80
{
76
- a (id, severity, timestamp, message, additionalData, associations,
81
+ std::vector<std::string> additionalData_old{};
82
+ a (id, severity, timestamp, message, additionalData_old, associations,
77
83
resolved, fwVersion, updateTimestamp);
84
+ additionalData = util::additional_data::parse (additionalData_old);
78
85
}
79
86
else if (version < std::stoul (FIRST_CEREAL_CLASS_VERSION_WITH_RESOLUTION))
80
87
{
81
- a (id, severity, timestamp, message, additionalData, associations,
88
+ std::vector<std::string> additionalData_old{};
89
+ a (id, severity, timestamp, message, additionalData_old, associations,
82
90
resolved, fwVersion, updateTimestamp, eventId);
91
+ additionalData = util::additional_data::parse (additionalData_old);
92
+ }
93
+ else if (version <
94
+ std::stoul (FIRST_CEREAL_CLASS_VERSION_WITH_METADATA_DICT))
95
+ {
96
+ std::vector<std::string> additionalData_old{};
97
+ a (id, severity, timestamp, message, additionalData_old, associations,
98
+ resolved, fwVersion, updateTimestamp, eventId, resolution);
99
+ additionalData = util::additional_data::parse (additionalData_old);
83
100
}
84
101
else
85
102
{
@@ -91,8 +108,8 @@ void load(Archive& a, Entry& e, const std::uint32_t version)
91
108
e.severity (severity, true );
92
109
e.timestamp (timestamp, true );
93
110
e.message (message, true );
94
- e.additionalData (additionalData, true );
95
- e.additionalData2 (util::additional_data::parse ( additionalData) , true );
111
+ e.additionalData (util::additional_data::combine ( additionalData) , true );
112
+ e.additionalData2 (additionalData, true );
96
113
e.sdbusplus ::server::xyz::openbmc_project::logging::Entry::resolved (
97
114
resolved, true );
98
115
e.associations (associations, true );
0 commit comments