OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent

Componenti · Console e strumenti

ok (CLI)

Il client OpenStack: i comandi di python-openstackclient 10.3.1 e dei suoi plugin, con gli stessi argomenti, output e codici di uscita.

Go Binario Go staticoopenkeel-ok

Il modulo

ok is the OpenStack client of OpenKeel: the commands of the Python openstack CLI (python-openstackclient 10.3.1, branch stable/2026.2) and of its plugins, in one static Go binary.

ServiceCommand groupsPython reference
Novaserver, flavor, keypair, aggregate, hypervisor... (openstack.compute.v2)python-openstackclient
Keystoneproject, user, role, token, federation... (openstack.identity.v3, .v2)python-openstackclient
Glanceimage (openstack.image.v2, .v1)python-openstackclient
Cinder, cinder-backupvolume, volume backup, block storage... (openstack.volume.v3, .v2)python-openstackclient
Neutronnetwork, subnet, port, router, security group... (openstack.network.v2)python-openstackclient
neutron-fwaas, neutron-vpnaas, BGP VPN, dynamic routing, TaaSfirewall group, vpn, bgpvpn, bgp, tap...python-openstackclient
Neutron logs, SFCnetwork log, sfcpython-neutronclient
Octavia (served by neutron-api in OpenKeel)loadbalancerpython-octaviaclient
Swift (Ceph RGW in OpenKeel)object, containerpython-openstackclient
Placementresource provider, allocation, trait...osc-placement
Ironicbaremetalpython-ironicclient
Barbicansecret, acl, capython-barbicanclient
Designatezone, recordset, ptr, tld...python-designateclient
Manilasharepython-manilaclient
Heatstack, orchestrationpython-heatclient
Masakarisegment, notificationpython-masakariclient
cross-servicequota, limits, availability zone, extension, versions, project cleanuppython-openstackclient

Compatibility contract: the command names, arguments, defaults, output formats (-f table|json|yaml|value|csv|shell, -c, --sort-column...), error messages, exit codes and HTTP requests are those of openstack, so scripts keep working. Configuration is read the same way: clouds.yaml, secure.yaml (./, ~/.config/openstack/, the platform config directory, /etc/openstack/), OS_* variables and --os-* options, with the same precedence. okadm --export-config writes a clouds.yaml that ok uses as is. The exceptions are listed in docs/CONFORMANCE.md (upstream defects that ok fixes, no interactive shell).

export OS_CLOUD=openkeel
ok server list
ok network create private --description "lab network" -f json
ok loadbalancer create --vip-subnet-id private-subnet --name lb1

Note: until the rename to okadm, ok was the name of the OpenKeel installer. ok install, ok plan and the other lifecycle commands are now okadm install, okadm plan...

Estratto da openkeel-ok/README.md (in inglese).

Come viene testata la compatibilità

ok viene confrontato con la CLI openstack Python: stesse righe di comando analizzate, stessi formati di output, ed entrambe le CLI eseguite sullo stesso cloud simulato e poi sul laboratorio OpenKeel.

Test differenziale

Confronto differenziale con la CLI Python

openstack Python e ok, eseguiti sullo stesso cloud simulato, restituiscono lo stesso codice di uscita, gli stessi stdout e stderr e ogni richiesta inviata identica.

Esecuzione

4,142 casi sul catalogo dei comandi con risposte preregistrate; confrontati metodo, percorso, query, corpo e intestazioni di microversione.

Ultimo risultato 4,059 confrontano tutto; 83 saltano una parte, ciascuno con una nota.

Fonte: openkeel-ok/docs/CONFORMANCE.md

Test unitari e golden test

Analisi degli argomenti

Le righe di comando vengono analizzate nello stesso namespace, o producono lo stesso errore, come con l'argparse di Python.

Esecuzione

9,500 righe di comando sintetiche su tutti i comandi (internal/argparse).

Ultimo risultato Namespace o errore identico.

Fonte: openkeel-ok/docs/CONFORMANCE.md

Test unitari e golden test

Formattatori di output e configurazione

Gli output table, json, yaml, csv, value e shell sono identici byte per byte; la risoluzione di clouds.yaml e OS_* corrisponde a osc-lib.

Esecuzione

13 risultati di riferimento ricavati da cliff e PyYAML (internal/output); 19 scenari di configurazione (internal/app).

Ultimo risultato Byte per byte; 1,325 comandi di 25 gruppi implementati.

Fonte: openkeel-ok/docs/CONFORMANCE.md

End-to-end su un laboratorio

End-to-end sul laboratorio OpenKeel

ok e openstack vengono eseguiti affiancati con comandi di lettura su ogni servizio installato, poi un ciclo di scrittura con ok.

Esecuzione

Laboratorio installato con okadm install --mode lab, raggiunto tramite kubectl port-forward e sostituzioni di endpoint.

Ultimo risultato 37 / 42 comandi di lettura identici (gli altri 5: i plugin Python ignorano le sostituzioni di endpoint); ciclo di scrittura senza errori; server create --wait non concluso (2026-11-02).

Fonte: openkeel-ok/docs/CONFORMANCE.md

Escluso dal rewrite

ok riproduce comandi, argomenti e output della CLI openstack e dei suoi plugin in un unico binario statico, senza shell interattiva né caricamento di plugin Python.

Meccanismi interni semplificati

Shell interattiva cmd2

Perché è stato escluso

ok è pensato per script e comandi singoli.

Perché la soluzione non ne risente

ok senza comando mostra un errore; ogni comando continua a girare dalla shell con argomenti e output identici.

Fonte: openkeel-ok/docs/CONFORMANCE.md

Meccanismi interni semplificati

Plugin Python installati separatamente

Perché è stato escluso

I gruppi di comandi di python-openstackclient e dei plugin client (Placement, Octavia, Ironic, Barbican, Designate, Manila, Heat, Masakari) sono compilati in un unico binario Go.

Perché la soluzione non ne risente

Nessun virtualenv né installazione di plugin; sono presenti 1.325 comandi. module list mostra i moduli Go di ok anziché pacchetti Python.

Fonte: openkeel-ok/README.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

Specifiche