10ec8b83dSEd Tanous #pragma once 20ec8b83dSEd Tanous #include <nlohmann/json.hpp> 30ec8b83dSEd Tanous 40ec8b83dSEd Tanous namespace physical_context 50ec8b83dSEd Tanous { 60ec8b83dSEd Tanous // clang-format off 70ec8b83dSEd Tanous 80ec8b83dSEd Tanous enum class PhysicalContext{ 90ec8b83dSEd Tanous Invalid, 100ec8b83dSEd Tanous Room, 110ec8b83dSEd Tanous Intake, 120ec8b83dSEd Tanous Exhaust, 130ec8b83dSEd Tanous LiquidInlet, 140ec8b83dSEd Tanous LiquidOutlet, 150ec8b83dSEd Tanous Front, 160ec8b83dSEd Tanous Back, 170ec8b83dSEd Tanous Upper, 180ec8b83dSEd Tanous Lower, 190ec8b83dSEd Tanous CPU, 200ec8b83dSEd Tanous CPUSubsystem, 210ec8b83dSEd Tanous GPU, 220ec8b83dSEd Tanous GPUSubsystem, 230ec8b83dSEd Tanous FPGA, 240ec8b83dSEd Tanous Accelerator, 250ec8b83dSEd Tanous ASIC, 260ec8b83dSEd Tanous Backplane, 270ec8b83dSEd Tanous SystemBoard, 280ec8b83dSEd Tanous PowerSupply, 290ec8b83dSEd Tanous PowerSubsystem, 300ec8b83dSEd Tanous VoltageRegulator, 310ec8b83dSEd Tanous Rectifier, 320ec8b83dSEd Tanous StorageDevice, 33*dd5c81e9SGunnar Mills StorageSubsystem, 340ec8b83dSEd Tanous NetworkingDevice, 35*dd5c81e9SGunnar Mills ExpansionSubsystem, 360ec8b83dSEd Tanous ComputeBay, 370ec8b83dSEd Tanous StorageBay, 380ec8b83dSEd Tanous NetworkBay, 390ec8b83dSEd Tanous ExpansionBay, 400ec8b83dSEd Tanous PowerSupplyBay, 410ec8b83dSEd Tanous Memory, 420ec8b83dSEd Tanous MemorySubsystem, 430ec8b83dSEd Tanous Chassis, 440ec8b83dSEd Tanous Fan, 450ec8b83dSEd Tanous CoolingSubsystem, 460ec8b83dSEd Tanous Motor, 470ec8b83dSEd Tanous Transformer, 480ec8b83dSEd Tanous ACUtilityInput, 490ec8b83dSEd Tanous ACStaticBypassInput, 500ec8b83dSEd Tanous ACMaintenanceBypassInput, 510ec8b83dSEd Tanous DCBus, 520ec8b83dSEd Tanous ACOutput, 530ec8b83dSEd Tanous ACInput, 54*dd5c81e9SGunnar Mills PowerOutlet, 550ec8b83dSEd Tanous TrustedModule, 560ec8b83dSEd Tanous Board, 570ec8b83dSEd Tanous Transceiver, 580ec8b83dSEd Tanous Battery, 590ec8b83dSEd Tanous Pump, 6028cfceb2SGunnar Mills Filter, 6128cfceb2SGunnar Mills Reservoir, 6228cfceb2SGunnar Mills Switch, 6328cfceb2SGunnar Mills Manager, 640ec8b83dSEd Tanous }; 650ec8b83dSEd Tanous 660ec8b83dSEd Tanous enum class PhysicalSubContext{ 670ec8b83dSEd Tanous Invalid, 680ec8b83dSEd Tanous Input, 690ec8b83dSEd Tanous Output, 700ec8b83dSEd Tanous }; 710ec8b83dSEd Tanous 720ec8b83dSEd Tanous enum class LogicalContext{ 730ec8b83dSEd Tanous Invalid, 740ec8b83dSEd Tanous Capacity, 750ec8b83dSEd Tanous Environment, 760ec8b83dSEd Tanous Network, 770ec8b83dSEd Tanous Performance, 780ec8b83dSEd Tanous Security, 790ec8b83dSEd Tanous Storage, 800ec8b83dSEd Tanous }; 810ec8b83dSEd Tanous 820ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PhysicalContext, { 830ec8b83dSEd Tanous {PhysicalContext::Invalid, "Invalid"}, 840ec8b83dSEd Tanous {PhysicalContext::Room, "Room"}, 850ec8b83dSEd Tanous {PhysicalContext::Intake, "Intake"}, 860ec8b83dSEd Tanous {PhysicalContext::Exhaust, "Exhaust"}, 870ec8b83dSEd Tanous {PhysicalContext::LiquidInlet, "LiquidInlet"}, 880ec8b83dSEd Tanous {PhysicalContext::LiquidOutlet, "LiquidOutlet"}, 890ec8b83dSEd Tanous {PhysicalContext::Front, "Front"}, 900ec8b83dSEd Tanous {PhysicalContext::Back, "Back"}, 910ec8b83dSEd Tanous {PhysicalContext::Upper, "Upper"}, 920ec8b83dSEd Tanous {PhysicalContext::Lower, "Lower"}, 930ec8b83dSEd Tanous {PhysicalContext::CPU, "CPU"}, 940ec8b83dSEd Tanous {PhysicalContext::CPUSubsystem, "CPUSubsystem"}, 950ec8b83dSEd Tanous {PhysicalContext::GPU, "GPU"}, 960ec8b83dSEd Tanous {PhysicalContext::GPUSubsystem, "GPUSubsystem"}, 970ec8b83dSEd Tanous {PhysicalContext::FPGA, "FPGA"}, 980ec8b83dSEd Tanous {PhysicalContext::Accelerator, "Accelerator"}, 990ec8b83dSEd Tanous {PhysicalContext::ASIC, "ASIC"}, 1000ec8b83dSEd Tanous {PhysicalContext::Backplane, "Backplane"}, 1010ec8b83dSEd Tanous {PhysicalContext::SystemBoard, "SystemBoard"}, 1020ec8b83dSEd Tanous {PhysicalContext::PowerSupply, "PowerSupply"}, 1030ec8b83dSEd Tanous {PhysicalContext::PowerSubsystem, "PowerSubsystem"}, 1040ec8b83dSEd Tanous {PhysicalContext::VoltageRegulator, "VoltageRegulator"}, 1050ec8b83dSEd Tanous {PhysicalContext::Rectifier, "Rectifier"}, 1060ec8b83dSEd Tanous {PhysicalContext::StorageDevice, "StorageDevice"}, 107*dd5c81e9SGunnar Mills {PhysicalContext::StorageSubsystem, "StorageSubsystem"}, 1080ec8b83dSEd Tanous {PhysicalContext::NetworkingDevice, "NetworkingDevice"}, 109*dd5c81e9SGunnar Mills {PhysicalContext::ExpansionSubsystem, "ExpansionSubsystem"}, 1100ec8b83dSEd Tanous {PhysicalContext::ComputeBay, "ComputeBay"}, 1110ec8b83dSEd Tanous {PhysicalContext::StorageBay, "StorageBay"}, 1120ec8b83dSEd Tanous {PhysicalContext::NetworkBay, "NetworkBay"}, 1130ec8b83dSEd Tanous {PhysicalContext::ExpansionBay, "ExpansionBay"}, 1140ec8b83dSEd Tanous {PhysicalContext::PowerSupplyBay, "PowerSupplyBay"}, 1150ec8b83dSEd Tanous {PhysicalContext::Memory, "Memory"}, 1160ec8b83dSEd Tanous {PhysicalContext::MemorySubsystem, "MemorySubsystem"}, 1170ec8b83dSEd Tanous {PhysicalContext::Chassis, "Chassis"}, 1180ec8b83dSEd Tanous {PhysicalContext::Fan, "Fan"}, 1190ec8b83dSEd Tanous {PhysicalContext::CoolingSubsystem, "CoolingSubsystem"}, 1200ec8b83dSEd Tanous {PhysicalContext::Motor, "Motor"}, 1210ec8b83dSEd Tanous {PhysicalContext::Transformer, "Transformer"}, 1220ec8b83dSEd Tanous {PhysicalContext::ACUtilityInput, "ACUtilityInput"}, 1230ec8b83dSEd Tanous {PhysicalContext::ACStaticBypassInput, "ACStaticBypassInput"}, 1240ec8b83dSEd Tanous {PhysicalContext::ACMaintenanceBypassInput, "ACMaintenanceBypassInput"}, 1250ec8b83dSEd Tanous {PhysicalContext::DCBus, "DCBus"}, 1260ec8b83dSEd Tanous {PhysicalContext::ACOutput, "ACOutput"}, 1270ec8b83dSEd Tanous {PhysicalContext::ACInput, "ACInput"}, 128*dd5c81e9SGunnar Mills {PhysicalContext::PowerOutlet, "PowerOutlet"}, 1290ec8b83dSEd Tanous {PhysicalContext::TrustedModule, "TrustedModule"}, 1300ec8b83dSEd Tanous {PhysicalContext::Board, "Board"}, 1310ec8b83dSEd Tanous {PhysicalContext::Transceiver, "Transceiver"}, 1320ec8b83dSEd Tanous {PhysicalContext::Battery, "Battery"}, 1330ec8b83dSEd Tanous {PhysicalContext::Pump, "Pump"}, 13428cfceb2SGunnar Mills {PhysicalContext::Filter, "Filter"}, 13528cfceb2SGunnar Mills {PhysicalContext::Reservoir, "Reservoir"}, 13628cfceb2SGunnar Mills {PhysicalContext::Switch, "Switch"}, 13728cfceb2SGunnar Mills {PhysicalContext::Manager, "Manager"}, 1380ec8b83dSEd Tanous }); 1390ec8b83dSEd Tanous 1400ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PhysicalSubContext, { 1410ec8b83dSEd Tanous {PhysicalSubContext::Invalid, "Invalid"}, 1420ec8b83dSEd Tanous {PhysicalSubContext::Input, "Input"}, 1430ec8b83dSEd Tanous {PhysicalSubContext::Output, "Output"}, 1440ec8b83dSEd Tanous }); 1450ec8b83dSEd Tanous 1460ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LogicalContext, { 1470ec8b83dSEd Tanous {LogicalContext::Invalid, "Invalid"}, 1480ec8b83dSEd Tanous {LogicalContext::Capacity, "Capacity"}, 1490ec8b83dSEd Tanous {LogicalContext::Environment, "Environment"}, 1500ec8b83dSEd Tanous {LogicalContext::Network, "Network"}, 1510ec8b83dSEd Tanous {LogicalContext::Performance, "Performance"}, 1520ec8b83dSEd Tanous {LogicalContext::Security, "Security"}, 1530ec8b83dSEd Tanous {LogicalContext::Storage, "Storage"}, 1540ec8b83dSEd Tanous }); 1550ec8b83dSEd Tanous 1560ec8b83dSEd Tanous } 1570ec8b83dSEd Tanous // clang-format on 158