1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 30ec8b83dSEd Tanous #pragma once 40ec8b83dSEd Tanous #include <nlohmann/json.hpp> 50ec8b83dSEd Tanous 60ec8b83dSEd Tanous namespace metric_report_definition 70ec8b83dSEd Tanous { 80ec8b83dSEd Tanous // clang-format off 90ec8b83dSEd Tanous 100ec8b83dSEd Tanous enum class MetricReportDefinitionType{ 110ec8b83dSEd Tanous Invalid, 120ec8b83dSEd Tanous Periodic, 130ec8b83dSEd Tanous OnChange, 140ec8b83dSEd Tanous OnRequest, 150ec8b83dSEd Tanous }; 160ec8b83dSEd Tanous 170ec8b83dSEd Tanous enum class ReportActionsEnum{ 180ec8b83dSEd Tanous Invalid, 190ec8b83dSEd Tanous LogToMetricReportsCollection, 200ec8b83dSEd Tanous RedfishEvent, 210ec8b83dSEd Tanous }; 220ec8b83dSEd Tanous 230ec8b83dSEd Tanous enum class ReportUpdatesEnum{ 240ec8b83dSEd Tanous Invalid, 250ec8b83dSEd Tanous Overwrite, 260ec8b83dSEd Tanous AppendWrapsWhenFull, 270ec8b83dSEd Tanous AppendStopsWhenFull, 280ec8b83dSEd Tanous NewReport, 290ec8b83dSEd Tanous }; 300ec8b83dSEd Tanous 310ec8b83dSEd Tanous enum class CalculationAlgorithmEnum{ 320ec8b83dSEd Tanous Invalid, 330ec8b83dSEd Tanous Average, 340ec8b83dSEd Tanous Maximum, 350ec8b83dSEd Tanous Minimum, 360ec8b83dSEd Tanous Summation, 370ec8b83dSEd Tanous }; 380ec8b83dSEd Tanous 390ec8b83dSEd Tanous enum class CollectionTimeScope{ 400ec8b83dSEd Tanous Invalid, 410ec8b83dSEd Tanous Point, 420ec8b83dSEd Tanous Interval, 430ec8b83dSEd Tanous StartupInterval, 440ec8b83dSEd Tanous }; 450ec8b83dSEd Tanous 460ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MetricReportDefinitionType, { 470ec8b83dSEd Tanous {MetricReportDefinitionType::Invalid, "Invalid"}, 480ec8b83dSEd Tanous {MetricReportDefinitionType::Periodic, "Periodic"}, 490ec8b83dSEd Tanous {MetricReportDefinitionType::OnChange, "OnChange"}, 500ec8b83dSEd Tanous {MetricReportDefinitionType::OnRequest, "OnRequest"}, 510ec8b83dSEd Tanous }); 520ec8b83dSEd Tanous 530ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ReportActionsEnum, { 540ec8b83dSEd Tanous {ReportActionsEnum::Invalid, "Invalid"}, 550ec8b83dSEd Tanous {ReportActionsEnum::LogToMetricReportsCollection, "LogToMetricReportsCollection"}, 560ec8b83dSEd Tanous {ReportActionsEnum::RedfishEvent, "RedfishEvent"}, 570ec8b83dSEd Tanous }); 580ec8b83dSEd Tanous 590ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ReportUpdatesEnum, { 600ec8b83dSEd Tanous {ReportUpdatesEnum::Invalid, "Invalid"}, 610ec8b83dSEd Tanous {ReportUpdatesEnum::Overwrite, "Overwrite"}, 620ec8b83dSEd Tanous {ReportUpdatesEnum::AppendWrapsWhenFull, "AppendWrapsWhenFull"}, 630ec8b83dSEd Tanous {ReportUpdatesEnum::AppendStopsWhenFull, "AppendStopsWhenFull"}, 640ec8b83dSEd Tanous {ReportUpdatesEnum::NewReport, "NewReport"}, 650ec8b83dSEd Tanous }); 660ec8b83dSEd Tanous 670ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CalculationAlgorithmEnum, { 680ec8b83dSEd Tanous {CalculationAlgorithmEnum::Invalid, "Invalid"}, 690ec8b83dSEd Tanous {CalculationAlgorithmEnum::Average, "Average"}, 700ec8b83dSEd Tanous {CalculationAlgorithmEnum::Maximum, "Maximum"}, 710ec8b83dSEd Tanous {CalculationAlgorithmEnum::Minimum, "Minimum"}, 720ec8b83dSEd Tanous {CalculationAlgorithmEnum::Summation, "Summation"}, 730ec8b83dSEd Tanous }); 740ec8b83dSEd Tanous 750ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CollectionTimeScope, { 760ec8b83dSEd Tanous {CollectionTimeScope::Invalid, "Invalid"}, 770ec8b83dSEd Tanous {CollectionTimeScope::Point, "Point"}, 780ec8b83dSEd Tanous {CollectionTimeScope::Interval, "Interval"}, 790ec8b83dSEd Tanous {CollectionTimeScope::StartupInterval, "StartupInterval"}, 800ec8b83dSEd Tanous }); 810ec8b83dSEd Tanous 820ec8b83dSEd Tanous } 830ec8b83dSEd Tanous // clang-format on 84