1*853c0dc5SEd Tanous #pragma once
2*853c0dc5SEd Tanous #include <nlohmann/json.hpp>
3*853c0dc5SEd Tanous 
4*853c0dc5SEd Tanous namespace resource_block
5*853c0dc5SEd Tanous {
6*853c0dc5SEd Tanous // clang-format off
7*853c0dc5SEd Tanous 
8*853c0dc5SEd Tanous enum class ResourceBlockType{
9*853c0dc5SEd Tanous     Invalid,
10*853c0dc5SEd Tanous     Compute,
11*853c0dc5SEd Tanous     Processor,
12*853c0dc5SEd Tanous     Memory,
13*853c0dc5SEd Tanous     Network,
14*853c0dc5SEd Tanous     Storage,
15*853c0dc5SEd Tanous     ComputerSystem,
16*853c0dc5SEd Tanous     Expansion,
17*853c0dc5SEd Tanous     IndependentResource,
18*853c0dc5SEd Tanous };
19*853c0dc5SEd Tanous 
20*853c0dc5SEd Tanous enum class CompositionState{
21*853c0dc5SEd Tanous     Invalid,
22*853c0dc5SEd Tanous     Composing,
23*853c0dc5SEd Tanous     ComposedAndAvailable,
24*853c0dc5SEd Tanous     Composed,
25*853c0dc5SEd Tanous     Unused,
26*853c0dc5SEd Tanous     Failed,
27*853c0dc5SEd Tanous     Unavailable,
28*853c0dc5SEd Tanous };
29*853c0dc5SEd Tanous 
30*853c0dc5SEd Tanous enum class PoolType{
31*853c0dc5SEd Tanous     Invalid,
32*853c0dc5SEd Tanous     Free,
33*853c0dc5SEd Tanous     Active,
34*853c0dc5SEd Tanous     Unassigned,
35*853c0dc5SEd Tanous };
36*853c0dc5SEd Tanous 
37*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ResourceBlockType, {
38*853c0dc5SEd Tanous     {ResourceBlockType::Invalid, "Invalid"},
39*853c0dc5SEd Tanous     {ResourceBlockType::Compute, "Compute"},
40*853c0dc5SEd Tanous     {ResourceBlockType::Processor, "Processor"},
41*853c0dc5SEd Tanous     {ResourceBlockType::Memory, "Memory"},
42*853c0dc5SEd Tanous     {ResourceBlockType::Network, "Network"},
43*853c0dc5SEd Tanous     {ResourceBlockType::Storage, "Storage"},
44*853c0dc5SEd Tanous     {ResourceBlockType::ComputerSystem, "ComputerSystem"},
45*853c0dc5SEd Tanous     {ResourceBlockType::Expansion, "Expansion"},
46*853c0dc5SEd Tanous     {ResourceBlockType::IndependentResource, "IndependentResource"},
47*853c0dc5SEd Tanous });
48*853c0dc5SEd Tanous 
49*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CompositionState, {
50*853c0dc5SEd Tanous     {CompositionState::Invalid, "Invalid"},
51*853c0dc5SEd Tanous     {CompositionState::Composing, "Composing"},
52*853c0dc5SEd Tanous     {CompositionState::ComposedAndAvailable, "ComposedAndAvailable"},
53*853c0dc5SEd Tanous     {CompositionState::Composed, "Composed"},
54*853c0dc5SEd Tanous     {CompositionState::Unused, "Unused"},
55*853c0dc5SEd Tanous     {CompositionState::Failed, "Failed"},
56*853c0dc5SEd Tanous     {CompositionState::Unavailable, "Unavailable"},
57*853c0dc5SEd Tanous });
58*853c0dc5SEd Tanous 
59*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PoolType, {
60*853c0dc5SEd Tanous     {PoolType::Invalid, "Invalid"},
61*853c0dc5SEd Tanous     {PoolType::Free, "Free"},
62*853c0dc5SEd Tanous     {PoolType::Active, "Active"},
63*853c0dc5SEd Tanous     {PoolType::Unassigned, "Unassigned"},
64*853c0dc5SEd Tanous });
65*853c0dc5SEd Tanous 
66*853c0dc5SEd Tanous }
67*853c0dc5SEd Tanous // clang-format on
68