'Server System (Product Configurator/Rule Engine) Configurator Design
I am searching for a clean solution for my Configuration problem.
I have been tasked with creating a Server System Configurator, I have designed & implemented one. However, I cannot help but feel like there is a better/cleaner route.
Currently I have abstracted a few hierarchical notions of what a "Server" is:
System > Chassis + PSUs > Node(s) > Individual Node Components (CPU, Memory, Drives, PCIes, etc).
So, I have implemented these ideas in an Object-Oriented way in Python, where I have a System and it has Chassis member, and Chassis has a list of nodes member, and a PSU member, etc down the line.
The tricky part of the configuration process is that some parts are dynamic. I.E. CPU_SKU_#1 does not work with CHASSIS_SKU_#3, or CHASSIS_SKU_#1 has 6 SSD slots, and CHASSIS_SKU_#2 has only 2 SSD slots.
So, underneath my Python OOP implementation of what a System looks like is a Mongo Database that has an entry for each Product Family, where it outlines all the potential components, chassis, PSUs, etc SKUs and which ones conflict with the other ones.
So, it is a data-driven model, I feed the data into the configurator which then allows you to query for valid options.
I.E. chassis.enum_psus() -> a List of VALID PSUs for this Chassis. chassis.nodes[0].enum_cpus() -> A list of VALID CPUs for this Chassis + Node (since a CPU might conflict with the chassis and/or the Node).
So, overall I am wondering if the route I have gone is an acceptable route, and/or if there are better/easier routes?
Ultimately, I know the route I took "works", I just cannot help but feel like there are better routes out there to success.
Any help/pointers for designing Configurators would be appreciated.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
