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