blob: 5ac922c4b98cb75d8e4d538488ed238f317ab70a [file] [log] [blame]
// NOLINTBEGIN
#pragma once
#include <cstdint>
#include <nlohmann/json.hpp>
namespace volume
{
// clang-format off
enum class InitializeType : std::uint8_t{
Invalid,
Fast,
Slow,
};
enum class InitializeMethod : std::uint8_t{
Invalid,
Skip,
Background,
Foreground,
};
enum class RAIDType : std::uint8_t{
Invalid,
RAID0,
RAID1,
RAID3,
RAID4,
RAID5,
RAID6,
RAID10,
RAID01,
RAID6TP,
RAID1E,
RAID50,
RAID60,
RAID00,
RAID10E,
RAID1Triple,
RAID10Triple,
None,
};
enum class VolumeType : std::uint8_t{
Invalid,
RawDevice,
NonRedundant,
Mirrored,
StripedWithParity,
SpannedMirrors,
SpannedStripesWithParity,
};
enum class EncryptionTypes : std::uint8_t{
Invalid,
NativeDriveEncryption,
ControllerAssisted,
SoftwareAssisted,
};
enum class WriteHoleProtectionPolicyType : std::uint8_t{
Invalid,
Off,
Journaling,
DistributedLog,
Oem,
};
enum class VolumeUsageType : std::uint8_t{
Invalid,
Data,
SystemData,
CacheOnly,
SystemReserve,
ReplicationReserve,
};
enum class ReadCachePolicyType : std::uint8_t{
Invalid,
ReadAhead,
AdaptiveReadAhead,
Off,
};
enum class WriteCachePolicyType : std::uint8_t{
Invalid,
WriteThrough,
ProtectedWriteBack,
UnprotectedWriteBack,
Off,
};
enum class WriteCacheStateType : std::uint8_t{
Invalid,
Unprotected,
Protected,
Degraded,
};
enum class LBAFormatType : std::uint8_t{
Invalid,
LBAFormat0,
LBAFormat1,
LBAFormat2,
LBAFormat3,
LBAFormat4,
LBAFormat5,
LBAFormat6,
LBAFormat7,
LBAFormat8,
LBAFormat9,
LBAFormat10,
LBAFormat11,
LBAFormat12,
LBAFormat13,
LBAFormat14,
LBAFormat15,
};
enum class NamespaceType : std::uint8_t{
Invalid,
Block,
KeyValue,
ZNS,
Computational,
};
enum class OperationType : std::uint8_t{
Invalid,
Deduplicate,
CheckConsistency,
Initialize,
Replicate,
Delete,
ChangeRAIDType,
Rebuild,
Encrypt,
Decrypt,
Resize,
Compress,
Sanitize,
Format,
};
enum class LBARelativePerformanceType : std::uint8_t{
Invalid,
Best,
Better,
Good,
Degraded,
};
NLOHMANN_JSON_SERIALIZE_ENUM(InitializeType, {
{InitializeType::Invalid, "Invalid"},
{InitializeType::Fast, "Fast"},
{InitializeType::Slow, "Slow"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(InitializeMethod, {
{InitializeMethod::Invalid, "Invalid"},
{InitializeMethod::Skip, "Skip"},
{InitializeMethod::Background, "Background"},
{InitializeMethod::Foreground, "Foreground"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(RAIDType, {
{RAIDType::Invalid, "Invalid"},
{RAIDType::RAID0, "RAID0"},
{RAIDType::RAID1, "RAID1"},
{RAIDType::RAID3, "RAID3"},
{RAIDType::RAID4, "RAID4"},
{RAIDType::RAID5, "RAID5"},
{RAIDType::RAID6, "RAID6"},
{RAIDType::RAID10, "RAID10"},
{RAIDType::RAID01, "RAID01"},
{RAIDType::RAID6TP, "RAID6TP"},
{RAIDType::RAID1E, "RAID1E"},
{RAIDType::RAID50, "RAID50"},
{RAIDType::RAID60, "RAID60"},
{RAIDType::RAID00, "RAID00"},
{RAIDType::RAID10E, "RAID10E"},
{RAIDType::RAID1Triple, "RAID1Triple"},
{RAIDType::RAID10Triple, "RAID10Triple"},
{RAIDType::None, "None"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(VolumeType, {
{VolumeType::Invalid, "Invalid"},
{VolumeType::RawDevice, "RawDevice"},
{VolumeType::NonRedundant, "NonRedundant"},
{VolumeType::Mirrored, "Mirrored"},
{VolumeType::StripedWithParity, "StripedWithParity"},
{VolumeType::SpannedMirrors, "SpannedMirrors"},
{VolumeType::SpannedStripesWithParity, "SpannedStripesWithParity"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(EncryptionTypes, {
{EncryptionTypes::Invalid, "Invalid"},
{EncryptionTypes::NativeDriveEncryption, "NativeDriveEncryption"},
{EncryptionTypes::ControllerAssisted, "ControllerAssisted"},
{EncryptionTypes::SoftwareAssisted, "SoftwareAssisted"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(WriteHoleProtectionPolicyType, {
{WriteHoleProtectionPolicyType::Invalid, "Invalid"},
{WriteHoleProtectionPolicyType::Off, "Off"},
{WriteHoleProtectionPolicyType::Journaling, "Journaling"},
{WriteHoleProtectionPolicyType::DistributedLog, "DistributedLog"},
{WriteHoleProtectionPolicyType::Oem, "Oem"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(VolumeUsageType, {
{VolumeUsageType::Invalid, "Invalid"},
{VolumeUsageType::Data, "Data"},
{VolumeUsageType::SystemData, "SystemData"},
{VolumeUsageType::CacheOnly, "CacheOnly"},
{VolumeUsageType::SystemReserve, "SystemReserve"},
{VolumeUsageType::ReplicationReserve, "ReplicationReserve"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(ReadCachePolicyType, {
{ReadCachePolicyType::Invalid, "Invalid"},
{ReadCachePolicyType::ReadAhead, "ReadAhead"},
{ReadCachePolicyType::AdaptiveReadAhead, "AdaptiveReadAhead"},
{ReadCachePolicyType::Off, "Off"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(WriteCachePolicyType, {
{WriteCachePolicyType::Invalid, "Invalid"},
{WriteCachePolicyType::WriteThrough, "WriteThrough"},
{WriteCachePolicyType::ProtectedWriteBack, "ProtectedWriteBack"},
{WriteCachePolicyType::UnprotectedWriteBack, "UnprotectedWriteBack"},
{WriteCachePolicyType::Off, "Off"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(WriteCacheStateType, {
{WriteCacheStateType::Invalid, "Invalid"},
{WriteCacheStateType::Unprotected, "Unprotected"},
{WriteCacheStateType::Protected, "Protected"},
{WriteCacheStateType::Degraded, "Degraded"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(LBAFormatType, {
{LBAFormatType::Invalid, "Invalid"},
{LBAFormatType::LBAFormat0, "LBAFormat0"},
{LBAFormatType::LBAFormat1, "LBAFormat1"},
{LBAFormatType::LBAFormat2, "LBAFormat2"},
{LBAFormatType::LBAFormat3, "LBAFormat3"},
{LBAFormatType::LBAFormat4, "LBAFormat4"},
{LBAFormatType::LBAFormat5, "LBAFormat5"},
{LBAFormatType::LBAFormat6, "LBAFormat6"},
{LBAFormatType::LBAFormat7, "LBAFormat7"},
{LBAFormatType::LBAFormat8, "LBAFormat8"},
{LBAFormatType::LBAFormat9, "LBAFormat9"},
{LBAFormatType::LBAFormat10, "LBAFormat10"},
{LBAFormatType::LBAFormat11, "LBAFormat11"},
{LBAFormatType::LBAFormat12, "LBAFormat12"},
{LBAFormatType::LBAFormat13, "LBAFormat13"},
{LBAFormatType::LBAFormat14, "LBAFormat14"},
{LBAFormatType::LBAFormat15, "LBAFormat15"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(NamespaceType, {
{NamespaceType::Invalid, "Invalid"},
{NamespaceType::Block, "Block"},
{NamespaceType::KeyValue, "KeyValue"},
{NamespaceType::ZNS, "ZNS"},
{NamespaceType::Computational, "Computational"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(OperationType, {
{OperationType::Invalid, "Invalid"},
{OperationType::Deduplicate, "Deduplicate"},
{OperationType::CheckConsistency, "CheckConsistency"},
{OperationType::Initialize, "Initialize"},
{OperationType::Replicate, "Replicate"},
{OperationType::Delete, "Delete"},
{OperationType::ChangeRAIDType, "ChangeRAIDType"},
{OperationType::Rebuild, "Rebuild"},
{OperationType::Encrypt, "Encrypt"},
{OperationType::Decrypt, "Decrypt"},
{OperationType::Resize, "Resize"},
{OperationType::Compress, "Compress"},
{OperationType::Sanitize, "Sanitize"},
{OperationType::Format, "Format"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(LBARelativePerformanceType, {
{LBARelativePerformanceType::Invalid, "Invalid"},
{LBARelativePerformanceType::Best, "Best"},
{LBARelativePerformanceType::Better, "Better"},
{LBARelativePerformanceType::Good, "Good"},
{LBARelativePerformanceType::Degraded, "Degraded"},
});
} // namespace volume
// clang-format on
// NOLINTEND