10ec8b83dSEd Tanous #pragma once 20ec8b83dSEd Tanous #include <nlohmann/json.hpp> 30ec8b83dSEd Tanous 40ec8b83dSEd Tanous namespace storage 50ec8b83dSEd Tanous { 60ec8b83dSEd Tanous // clang-format off 70ec8b83dSEd Tanous 80ec8b83dSEd Tanous enum class ResetToDefaultsType{ 90ec8b83dSEd Tanous Invalid, 100ec8b83dSEd Tanous ResetAll, 110ec8b83dSEd Tanous PreserveVolumes, 120ec8b83dSEd Tanous }; 130ec8b83dSEd Tanous 14a8d8f9d8SEd Tanous enum class HotspareActivationPolicy{ 15a8d8f9d8SEd Tanous Invalid, 16a8d8f9d8SEd Tanous OnDriveFailure, 17a8d8f9d8SEd Tanous OnDrivePredictedFailure, 18a8d8f9d8SEd Tanous OEM, 19a8d8f9d8SEd Tanous }; 20a8d8f9d8SEd Tanous 21a8d8f9d8SEd Tanous enum class EncryptionMode{ 22a8d8f9d8SEd Tanous Invalid, 23a8d8f9d8SEd Tanous Disabled, 24a8d8f9d8SEd Tanous UseExternalKey, 25a8d8f9d8SEd Tanous UseLocalKey, 26a8d8f9d8SEd Tanous }; 27a8d8f9d8SEd Tanous 28f263e09cSEd Tanous enum class AutoVolumeCreate{ 29f263e09cSEd Tanous Invalid, 30f263e09cSEd Tanous Disabled, 31f263e09cSEd Tanous NonRAID, 32f263e09cSEd Tanous RAID0, 33f263e09cSEd Tanous RAID1, 34f263e09cSEd Tanous }; 35f263e09cSEd Tanous 36*f2a8e57eSGunnar Mills enum class ConfigurationLock{ 37*f2a8e57eSGunnar Mills Invalid, 38*f2a8e57eSGunnar Mills Enabled, 39*f2a8e57eSGunnar Mills Disabled, 40*f2a8e57eSGunnar Mills Partial, 41*f2a8e57eSGunnar Mills }; 42*f2a8e57eSGunnar Mills 430ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ResetToDefaultsType, { 440ec8b83dSEd Tanous {ResetToDefaultsType::Invalid, "Invalid"}, 450ec8b83dSEd Tanous {ResetToDefaultsType::ResetAll, "ResetAll"}, 460ec8b83dSEd Tanous {ResetToDefaultsType::PreserveVolumes, "PreserveVolumes"}, 470ec8b83dSEd Tanous }); 480ec8b83dSEd Tanous 49a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(HotspareActivationPolicy, { 50a8d8f9d8SEd Tanous {HotspareActivationPolicy::Invalid, "Invalid"}, 51a8d8f9d8SEd Tanous {HotspareActivationPolicy::OnDriveFailure, "OnDriveFailure"}, 52a8d8f9d8SEd Tanous {HotspareActivationPolicy::OnDrivePredictedFailure, "OnDrivePredictedFailure"}, 53a8d8f9d8SEd Tanous {HotspareActivationPolicy::OEM, "OEM"}, 54a8d8f9d8SEd Tanous }); 55a8d8f9d8SEd Tanous 56a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EncryptionMode, { 57a8d8f9d8SEd Tanous {EncryptionMode::Invalid, "Invalid"}, 58a8d8f9d8SEd Tanous {EncryptionMode::Disabled, "Disabled"}, 59a8d8f9d8SEd Tanous {EncryptionMode::UseExternalKey, "UseExternalKey"}, 60a8d8f9d8SEd Tanous {EncryptionMode::UseLocalKey, "UseLocalKey"}, 61a8d8f9d8SEd Tanous }); 62a8d8f9d8SEd Tanous 63f263e09cSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AutoVolumeCreate, { 64f263e09cSEd Tanous {AutoVolumeCreate::Invalid, "Invalid"}, 65f263e09cSEd Tanous {AutoVolumeCreate::Disabled, "Disabled"}, 66f263e09cSEd Tanous {AutoVolumeCreate::NonRAID, "NonRAID"}, 67f263e09cSEd Tanous {AutoVolumeCreate::RAID0, "RAID0"}, 68f263e09cSEd Tanous {AutoVolumeCreate::RAID1, "RAID1"}, 69f263e09cSEd Tanous }); 70f263e09cSEd Tanous 71*f2a8e57eSGunnar Mills NLOHMANN_JSON_SERIALIZE_ENUM(ConfigurationLock, { 72*f2a8e57eSGunnar Mills {ConfigurationLock::Invalid, "Invalid"}, 73*f2a8e57eSGunnar Mills {ConfigurationLock::Enabled, "Enabled"}, 74*f2a8e57eSGunnar Mills {ConfigurationLock::Disabled, "Disabled"}, 75*f2a8e57eSGunnar Mills {ConfigurationLock::Partial, "Partial"}, 76*f2a8e57eSGunnar Mills }); 77*f2a8e57eSGunnar Mills 780ec8b83dSEd Tanous } 790ec8b83dSEd Tanous // clang-format on 80