The ironic.conductor.manager.ConductorManager is the primary class responsible for performing actions on bare-metal resources, including Chassis, Nodes, and Ports. It runs within the ironic-conductor process and receives commands via RPC.
Key architectural details:
- Driver Management: Drivers are loaded via entrypoints using
ironic.common.driver_factory. Each driver is instantiated once at service start, allowing a single manager to handle heterogeneous hardware. - High Availability: Multiple
ConductorManager instances can run on different hosts. They cooperatively manage nodes, using the ironic.conductor.task_manager.TaskManager to lock nodes during state-changing operations. - Node Distribution: A
tooz.hashring.HashRing is used to distribute nodes across active conductors that support the required driver. Rebalancing the ring may trigger environment setup (e.g., TFTP) or Neutron notifications.