1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace storage 7 { 8 // clang-format off 9 10 enum class ResetToDefaultsType{ 11 Invalid, 12 ResetAll, 13 PreserveVolumes, 14 }; 15 16 enum class HotspareActivationPolicy{ 17 Invalid, 18 OnDriveFailure, 19 OnDrivePredictedFailure, 20 OEM, 21 }; 22 23 enum class EncryptionMode{ 24 Invalid, 25 Disabled, 26 UseExternalKey, 27 UseLocalKey, 28 PasswordOnly, 29 PasswordWithExternalKey, 30 PasswordWithLocalKey, 31 }; 32 33 enum class AutoVolumeCreate{ 34 Invalid, 35 Disabled, 36 NonRAID, 37 RAID0, 38 RAID1, 39 }; 40 41 enum class ConfigurationLock{ 42 Invalid, 43 Enabled, 44 Disabled, 45 Partial, 46 }; 47 48 enum class TargetConfigurationLockLevel{ 49 Invalid, 50 Baseline, 51 }; 52 53 enum class ConfigLockOptions{ 54 Invalid, 55 Unlocked, 56 Locked, 57 LockdownUnsupported, 58 CommandUnsupported, 59 }; 60 61 NLOHMANN_JSON_SERIALIZE_ENUM(ResetToDefaultsType, { 62 {ResetToDefaultsType::Invalid, "Invalid"}, 63 {ResetToDefaultsType::ResetAll, "ResetAll"}, 64 {ResetToDefaultsType::PreserveVolumes, "PreserveVolumes"}, 65 }); 66 67 NLOHMANN_JSON_SERIALIZE_ENUM(HotspareActivationPolicy, { 68 {HotspareActivationPolicy::Invalid, "Invalid"}, 69 {HotspareActivationPolicy::OnDriveFailure, "OnDriveFailure"}, 70 {HotspareActivationPolicy::OnDrivePredictedFailure, "OnDrivePredictedFailure"}, 71 {HotspareActivationPolicy::OEM, "OEM"}, 72 }); 73 74 NLOHMANN_JSON_SERIALIZE_ENUM(EncryptionMode, { 75 {EncryptionMode::Invalid, "Invalid"}, 76 {EncryptionMode::Disabled, "Disabled"}, 77 {EncryptionMode::UseExternalKey, "UseExternalKey"}, 78 {EncryptionMode::UseLocalKey, "UseLocalKey"}, 79 {EncryptionMode::PasswordOnly, "PasswordOnly"}, 80 {EncryptionMode::PasswordWithExternalKey, "PasswordWithExternalKey"}, 81 {EncryptionMode::PasswordWithLocalKey, "PasswordWithLocalKey"}, 82 }); 83 84 NLOHMANN_JSON_SERIALIZE_ENUM(AutoVolumeCreate, { 85 {AutoVolumeCreate::Invalid, "Invalid"}, 86 {AutoVolumeCreate::Disabled, "Disabled"}, 87 {AutoVolumeCreate::NonRAID, "NonRAID"}, 88 {AutoVolumeCreate::RAID0, "RAID0"}, 89 {AutoVolumeCreate::RAID1, "RAID1"}, 90 }); 91 92 NLOHMANN_JSON_SERIALIZE_ENUM(ConfigurationLock, { 93 {ConfigurationLock::Invalid, "Invalid"}, 94 {ConfigurationLock::Enabled, "Enabled"}, 95 {ConfigurationLock::Disabled, "Disabled"}, 96 {ConfigurationLock::Partial, "Partial"}, 97 }); 98 99 NLOHMANN_JSON_SERIALIZE_ENUM(TargetConfigurationLockLevel, { 100 {TargetConfigurationLockLevel::Invalid, "Invalid"}, 101 {TargetConfigurationLockLevel::Baseline, "Baseline"}, 102 }); 103 104 NLOHMANN_JSON_SERIALIZE_ENUM(ConfigLockOptions, { 105 {ConfigLockOptions::Invalid, "Invalid"}, 106 {ConfigLockOptions::Unlocked, "Unlocked"}, 107 {ConfigLockOptions::Locked, "Locked"}, 108 {ConfigLockOptions::LockdownUnsupported, "LockdownUnsupported"}, 109 {ConfigLockOptions::CommandUnsupported, "CommandUnsupported"}, 110 }); 111 112 } 113 // clang-format on 114