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