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