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, 26*28cfceb2SGunnar Mills PasswordOnly, 27*28cfceb2SGunnar Mills PasswordWithExternalKey, 28*28cfceb2SGunnar Mills PasswordWithLocalKey, 29a8d8f9d8SEd Tanous }; 30a8d8f9d8SEd Tanous 31f263e09cSEd Tanous enum class AutoVolumeCreate{ 32f263e09cSEd Tanous Invalid, 33f263e09cSEd Tanous Disabled, 34f263e09cSEd Tanous NonRAID, 35f263e09cSEd Tanous RAID0, 36f263e09cSEd Tanous RAID1, 37f263e09cSEd Tanous }; 38f263e09cSEd Tanous 39f2a8e57eSGunnar Mills enum class ConfigurationLock{ 40f2a8e57eSGunnar Mills Invalid, 41f2a8e57eSGunnar Mills Enabled, 42f2a8e57eSGunnar Mills Disabled, 43f2a8e57eSGunnar Mills Partial, 44f2a8e57eSGunnar Mills }; 45f2a8e57eSGunnar Mills 46*28cfceb2SGunnar Mills enum class TargetConfigurationLockLevel{ 47*28cfceb2SGunnar Mills Invalid, 48*28cfceb2SGunnar Mills Baseline, 49*28cfceb2SGunnar Mills }; 50*28cfceb2SGunnar Mills 51*28cfceb2SGunnar Mills enum class ConfigLockOptions{ 52*28cfceb2SGunnar Mills Invalid, 53*28cfceb2SGunnar Mills Unlocked, 54*28cfceb2SGunnar Mills Locked, 55*28cfceb2SGunnar Mills LockdownUnsupported, 56*28cfceb2SGunnar Mills CommandUnsupported, 57*28cfceb2SGunnar Mills }; 58*28cfceb2SGunnar Mills 590ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ResetToDefaultsType, { 600ec8b83dSEd Tanous {ResetToDefaultsType::Invalid, "Invalid"}, 610ec8b83dSEd Tanous {ResetToDefaultsType::ResetAll, "ResetAll"}, 620ec8b83dSEd Tanous {ResetToDefaultsType::PreserveVolumes, "PreserveVolumes"}, 630ec8b83dSEd Tanous }); 640ec8b83dSEd Tanous 65a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(HotspareActivationPolicy, { 66a8d8f9d8SEd Tanous {HotspareActivationPolicy::Invalid, "Invalid"}, 67a8d8f9d8SEd Tanous {HotspareActivationPolicy::OnDriveFailure, "OnDriveFailure"}, 68a8d8f9d8SEd Tanous {HotspareActivationPolicy::OnDrivePredictedFailure, "OnDrivePredictedFailure"}, 69a8d8f9d8SEd Tanous {HotspareActivationPolicy::OEM, "OEM"}, 70a8d8f9d8SEd Tanous }); 71a8d8f9d8SEd Tanous 72a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EncryptionMode, { 73a8d8f9d8SEd Tanous {EncryptionMode::Invalid, "Invalid"}, 74a8d8f9d8SEd Tanous {EncryptionMode::Disabled, "Disabled"}, 75a8d8f9d8SEd Tanous {EncryptionMode::UseExternalKey, "UseExternalKey"}, 76a8d8f9d8SEd Tanous {EncryptionMode::UseLocalKey, "UseLocalKey"}, 77*28cfceb2SGunnar Mills {EncryptionMode::PasswordOnly, "PasswordOnly"}, 78*28cfceb2SGunnar Mills {EncryptionMode::PasswordWithExternalKey, "PasswordWithExternalKey"}, 79*28cfceb2SGunnar Mills {EncryptionMode::PasswordWithLocalKey, "PasswordWithLocalKey"}, 80a8d8f9d8SEd Tanous }); 81a8d8f9d8SEd Tanous 82f263e09cSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AutoVolumeCreate, { 83f263e09cSEd Tanous {AutoVolumeCreate::Invalid, "Invalid"}, 84f263e09cSEd Tanous {AutoVolumeCreate::Disabled, "Disabled"}, 85f263e09cSEd Tanous {AutoVolumeCreate::NonRAID, "NonRAID"}, 86f263e09cSEd Tanous {AutoVolumeCreate::RAID0, "RAID0"}, 87f263e09cSEd Tanous {AutoVolumeCreate::RAID1, "RAID1"}, 88f263e09cSEd Tanous }); 89f263e09cSEd Tanous 90f2a8e57eSGunnar Mills NLOHMANN_JSON_SERIALIZE_ENUM(ConfigurationLock, { 91f2a8e57eSGunnar Mills {ConfigurationLock::Invalid, "Invalid"}, 92f2a8e57eSGunnar Mills {ConfigurationLock::Enabled, "Enabled"}, 93f2a8e57eSGunnar Mills {ConfigurationLock::Disabled, "Disabled"}, 94f2a8e57eSGunnar Mills {ConfigurationLock::Partial, "Partial"}, 95f2a8e57eSGunnar Mills }); 96f2a8e57eSGunnar Mills 97*28cfceb2SGunnar Mills NLOHMANN_JSON_SERIALIZE_ENUM(TargetConfigurationLockLevel, { 98*28cfceb2SGunnar Mills {TargetConfigurationLockLevel::Invalid, "Invalid"}, 99*28cfceb2SGunnar Mills {TargetConfigurationLockLevel::Baseline, "Baseline"}, 100*28cfceb2SGunnar Mills }); 101*28cfceb2SGunnar Mills 102*28cfceb2SGunnar Mills NLOHMANN_JSON_SERIALIZE_ENUM(ConfigLockOptions, { 103*28cfceb2SGunnar Mills {ConfigLockOptions::Invalid, "Invalid"}, 104*28cfceb2SGunnar Mills {ConfigLockOptions::Unlocked, "Unlocked"}, 105*28cfceb2SGunnar Mills {ConfigLockOptions::Locked, "Locked"}, 106*28cfceb2SGunnar Mills {ConfigLockOptions::LockdownUnsupported, "LockdownUnsupported"}, 107*28cfceb2SGunnar Mills {ConfigLockOptions::CommandUnsupported, "CommandUnsupported"}, 108*28cfceb2SGunnar Mills }); 109*28cfceb2SGunnar Mills 1100ec8b83dSEd Tanous } 1110ec8b83dSEd Tanous // clang-format on 112