Upstream OpenStack Ironic (Python, 2026.2) in OpenKeel: a Helm chart, not a Go rewrite. Design, decisions and evidence are in openkeel-docs/IRONIC-DESIGN.md.
Estratto da openkeel-ironic/README.md (in inglese).
API REST
131 operazioni dell'API REST originale (route e azioni nel corpo) e il loro stato in OpenKeel.
Ironic resta il servizio Python upstream in un chart Helm; i test verificano che funzioni tramite il Keystone Go, il client standard e il Nova Go, su una macchina Redfish simulata.
End-to-end su un laboratorio
Smoke test su hardware Redfish simulato
openstack baremetal tramite il Keystone Go registra una macchina sushy-tools, la porta fino ad available, la distribuisce fino a wait call-back e ne annulla la distribuzione.
Esecuzione
openkeel-ironic/test/smoke.sh da un pod client (python-ironicclient 6.3.0) su un cluster kind.
Ultimo risultato Verificato (2026-10-31). Nessuna macchina si avvia: IPA e active non sono coperti.
Fonte: openkeel-docs/IRONIC-DESIGN.md
End-to-end su un laboratorio
okadm install, laboratorio e produzione
Il chart installato con okadm install --components ironic supera lo smoke test in entrambe le modalità di deployment.
Esecuzione
okadm install in modalità laboratorio (kind, 3 nodi) e in modalità produzione (3 API, 2 conductor, Galera 3), poi smoke.sh su ciascuna.
Ultimo risultato Eseguito il 2026-11-02; la produzione su kind ha richiesto due aggiunte specifiche per i test (workaround NetworkPolicy per il DNS, automated_clean: false).
Fonte: openkeel-docs/IRONIC-DESIGN.md
Scenario
Server bare metal tramite Nova
openstack server create con un flavor bare metal pilota Ironic tramite il Nova Go, e l'eliminazione libera il nodo.
Esecuzione
openkeel-ironic/test/nova.sh su un laboratorio con Nova e Ironic, Neutron flat e sushy-tools.
Ultimo risultato Verificato su kind fino a wait call-back; macchina reale, IPA, config drive e active non verificati.
Fonte: openkeel-nova/docs/CONFORMANCE.md
Escluso dal rewrite
Ironic resta il Python upstream in un chart OpenKeel, distribuito senza RabbitMQ, senza URL temporanei Swift né gli script di avvio Kolla.
Meccanismi interni semplificati
RPC RabbitMQ tra API e conductor
Perché è stato escluso
Ironic non ha bisogno di RabbitMQ per nient'altro; json-rpc sulla porta 8089 del conductor, con nomi DNS per Pod forniti dallo StatefulSet, svolge lo stesso compito.
Perché la soluzione non ne risente
API e conductor si comportano come upstream; le notifiche restano disattivate. JSON-RPC non è ancora cifrato, e una NetworkPolicy lo limita all'API.
Fonte: openkeel-docs/IRONIC-DESIGN.md
Meccanismi interni semplificati
URL temporanei Swift per le immagini
Perché è stato escluso
OpenKeel non ha un proprio servizio Swift.
Perché la soluzione non ne risente
Immagini e config drive sono serviti dal server HTTP del conductor (image_download_source http, configdrive_use_object_store false), quindi il deployment continua a funzionare.
Fonte: openkeel-docs/IRONIC-DESIGN.md
Meccanismi interni semplificati
Script di avvio Kolla e sudo
Gestito da Kubernetes
Perché è stato escluso
Le immagini Kolla sono fissate per digest e i loro binari girano direttamente, configurati da una ConfigMap, senza kolla_start né sudo.
Perché la soluzione non ne risente
Stesso codice Ironic; API e conductor girano senza privilegi, con un root in sola lettura e senza capability.
Fonte: openkeel-docs/IRONIC-DESIGN.md
Qui è elencato solo ciò che è stato escluso per scelta progettuale; il lavoro non ancora svolto si trova nei Known gaps del docs/CONFORMANCE.md del modulo. Tutti i moduli
Interazioni Ironic
Vista del servizio generata dalla skill dei diagrammi a partire dal modello OpenKeel.