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 enum class VolumeAssignmentPolicy{ 62 Invalid, 63 Unassigned, 64 Supervisor, 65 WeightedRoundRobin, 66 }; 67 68 NLOHMANN_JSON_SERIALIZE_ENUM(ResetToDefaultsType, { 69 {ResetToDefaultsType::Invalid, "Invalid"}, 70 {ResetToDefaultsType::ResetAll, "ResetAll"}, 71 {ResetToDefaultsType::PreserveVolumes, "PreserveVolumes"}, 72 }); 73 74 NLOHMANN_JSON_SERIALIZE_ENUM(HotspareActivationPolicy, { 75 {HotspareActivationPolicy::Invalid, "Invalid"}, 76 {HotspareActivationPolicy::OnDriveFailure, "OnDriveFailure"}, 77 {HotspareActivationPolicy::OnDrivePredictedFailure, "OnDrivePredictedFailure"}, 78 {HotspareActivationPolicy::OEM, "OEM"}, 79 }); 80 81 NLOHMANN_JSON_SERIALIZE_ENUM(EncryptionMode, { 82 {EncryptionMode::Invalid, "Invalid"}, 83 {EncryptionMode::Disabled, "Disabled"}, 84 {EncryptionMode::UseExternalKey, "UseExternalKey"}, 85 {EncryptionMode::UseLocalKey, "UseLocalKey"}, 86 {EncryptionMode::PasswordOnly, "PasswordOnly"}, 87 {EncryptionMode::PasswordWithExternalKey, "PasswordWithExternalKey"}, 88 {EncryptionMode::PasswordWithLocalKey, "PasswordWithLocalKey"}, 89 }); 90 91 NLOHMANN_JSON_SERIALIZE_ENUM(AutoVolumeCreate, { 92 {AutoVolumeCreate::Invalid, "Invalid"}, 93 {AutoVolumeCreate::Disabled, "Disabled"}, 94 {AutoVolumeCreate::NonRAID, "NonRAID"}, 95 {AutoVolumeCreate::RAID0, "RAID0"}, 96 {AutoVolumeCreate::RAID1, "RAID1"}, 97 }); 98 99 NLOHMANN_JSON_SERIALIZE_ENUM(ConfigurationLock, { 100 {ConfigurationLock::Invalid, "Invalid"}, 101 {ConfigurationLock::Enabled, "Enabled"}, 102 {ConfigurationLock::Disabled, "Disabled"}, 103 {ConfigurationLock::Partial, "Partial"}, 104 }); 105 106 NLOHMANN_JSON_SERIALIZE_ENUM(TargetConfigurationLockLevel, { 107 {TargetConfigurationLockLevel::Invalid, "Invalid"}, 108 {TargetConfigurationLockLevel::Baseline, "Baseline"}, 109 }); 110 111 NLOHMANN_JSON_SERIALIZE_ENUM(ConfigLockOptions, { 112 {ConfigLockOptions::Invalid, "Invalid"}, 113 {ConfigLockOptions::Unlocked, "Unlocked"}, 114 {ConfigLockOptions::Locked, "Locked"}, 115 {ConfigLockOptions::LockdownUnsupported, "LockdownUnsupported"}, 116 {ConfigLockOptions::CommandUnsupported, "CommandUnsupported"}, 117 }); 118 119 NLOHMANN_JSON_SERIALIZE_ENUM(VolumeAssignmentPolicy, { 120 {VolumeAssignmentPolicy::Invalid, "Invalid"}, 121 {VolumeAssignmentPolicy::Unassigned, "Unassigned"}, 122 {VolumeAssignmentPolicy::Supervisor, "Supervisor"}, 123 {VolumeAssignmentPolicy::WeightedRoundRobin, "WeightedRoundRobin"}, 124 }); 125 126 } 127 // clang-format on 128