1 #pragma once
2 #include <nlohmann/json.hpp>
3 
4 namespace operating_system
5 {
6 // clang-format off
7 
8 enum class OperatingSystemTypes{
9     Invalid,
10     Linux,
11     Windows,
12     Solaris,
13     HPUX,
14     AIX,
15     BSD,
16     macOS,
17     IBMi,
18     Hypervisor,
19 };
20 
21 enum class VirtualMachineEngineTypes{
22     Invalid,
23     VMwareESX,
24     HyperV,
25     Xen,
26     KVM,
27     QEMU,
28     VirtualBox,
29     PowerVM,
30 };
31 
32 enum class VirtualMachineImageTypes{
33     Invalid,
34     Raw,
35     OVF,
36     OVA,
37     VHD,
38     VMDK,
39     VDI,
40     QCOW,
41     QCOW2,
42 };
43 
44 enum class ContainerEngineTypes{
45     Invalid,
46     Docker,
47     containerd,
48     CRIO,
49 };
50 
51 NLOHMANN_JSON_SERIALIZE_ENUM(OperatingSystemTypes, {
52     {OperatingSystemTypes::Invalid, "Invalid"},
53     {OperatingSystemTypes::Linux, "Linux"},
54     {OperatingSystemTypes::Windows, "Windows"},
55     {OperatingSystemTypes::Solaris, "Solaris"},
56     {OperatingSystemTypes::HPUX, "HPUX"},
57     {OperatingSystemTypes::AIX, "AIX"},
58     {OperatingSystemTypes::BSD, "BSD"},
59     {OperatingSystemTypes::macOS, "macOS"},
60     {OperatingSystemTypes::IBMi, "IBMi"},
61     {OperatingSystemTypes::Hypervisor, "Hypervisor"},
62 });
63 
64 NLOHMANN_JSON_SERIALIZE_ENUM(VirtualMachineEngineTypes, {
65     {VirtualMachineEngineTypes::Invalid, "Invalid"},
66     {VirtualMachineEngineTypes::VMwareESX, "VMwareESX"},
67     {VirtualMachineEngineTypes::HyperV, "HyperV"},
68     {VirtualMachineEngineTypes::Xen, "Xen"},
69     {VirtualMachineEngineTypes::KVM, "KVM"},
70     {VirtualMachineEngineTypes::QEMU, "QEMU"},
71     {VirtualMachineEngineTypes::VirtualBox, "VirtualBox"},
72     {VirtualMachineEngineTypes::PowerVM, "PowerVM"},
73 });
74 
75 NLOHMANN_JSON_SERIALIZE_ENUM(VirtualMachineImageTypes, {
76     {VirtualMachineImageTypes::Invalid, "Invalid"},
77     {VirtualMachineImageTypes::Raw, "Raw"},
78     {VirtualMachineImageTypes::OVF, "OVF"},
79     {VirtualMachineImageTypes::OVA, "OVA"},
80     {VirtualMachineImageTypes::VHD, "VHD"},
81     {VirtualMachineImageTypes::VMDK, "VMDK"},
82     {VirtualMachineImageTypes::VDI, "VDI"},
83     {VirtualMachineImageTypes::QCOW, "QCOW"},
84     {VirtualMachineImageTypes::QCOW2, "QCOW2"},
85 });
86 
87 NLOHMANN_JSON_SERIALIZE_ENUM(ContainerEngineTypes, {
88     {ContainerEngineTypes::Invalid, "Invalid"},
89     {ContainerEngineTypes::Docker, "Docker"},
90     {ContainerEngineTypes::containerd, "containerd"},
91     {ContainerEngineTypes::CRIO, "CRIO"},
92 });
93 
94 }
95 // clang-format on
96