blob: 57ec5ba7b2dc9d003fdc8c1cd9c362023b16ba38 [file]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TRUE_HITLESS_TRUE_HITLESS_METRICS_PARSER_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TRUE_HITLESS_TRUE_HITLESS_METRICS_PARSER_H_
#include <string>
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include <nlohmann/json.hpp>
#include "tlbmc/true_hitless_metrics.pb.h"
namespace milotic_tlbmc {
class TrueHitlessMetricsParser {
public:
explicit TrueHitlessMetricsParser(
absl::string_view true_hitless_metrics_path);
TrueHitlessMetricsParser() = default;
TrueHitlessMetrics ParseTrueHitlessMetricsFromJson() const;
protected:
static absl::StatusOr<ServiceStatus> ConvertStringToServiceStatus(
absl::string_view status);
static absl::StatusOr<ActivationState> ParseActivationStateFromJson(
const nlohmann::json& json);
static absl::StatusOr<EmmcAvailabilityTargets>
ParseEmmcAvailabilityTargetsFromJson(const nlohmann::json& emmc_status_json);
static absl::StatusOr<IntermediateState> ParseIntermediateStateFromJson(
const nlohmann::json& json);
static absl::StatusOr<ManagedServices> ParseManagedServicesFromJson(
const nlohmann::json::array_t& managed_services_json);
static absl::StatusOr<VersionState> ParseVersionStateFromJson(
const nlohmann::json& json);
private:
// Path to the true hitless metrics file.
std::string true_hitless_metrics_path_;
};
} // namespace milotic_tlbmc
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TRUE_HITLESS_TRUE_HITLESS_METRICS_PARSER_H_