OpenKeel: die souveräne französische Cloud-Lösung mit europäischer Reichweite der inherent-Gruppe inherent entdecken

Komponenten · Konsole und Werkzeuge

ok (CLI)

Der OpenStack-Client: die Befehle von python-openstackclient 10.3.1 und seinen Plugins, mit denselben Argumenten, Ausgaben und Exit-Codes.

Go Statisches Go-Binaryopenkeel-ok

Das Modul

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...

Auszug aus openkeel-ok/README.md (auf Englisch).

Wie die Kompatibilität getestet wird

ok wird mit der Python-openstack-CLI verglichen: dieselben Befehlszeilen geparst, dieselben Ausgabeformate, und beide CLIs laufen gegen dieselbe Fake-Cloud und danach im OpenKeel-Lab.

Differenzieller Test

Differenzieller Vergleich mit der Python-CLI

Python-openstack und ok liefern gegen dieselbe Fake-Cloud denselben Exit-Code, dieselbe Ausgabe auf stdout und stderr und identische gesendete Anfragen.

Ausführung

4,142 Fälle über den Befehlskatalog mit vorgefertigten Antworten; Methode, Pfad, Query, Body und Microversion-Header verglichen.

Letztes Ergebnis 4,059 vergleichen alles; 83 überspringen einen Teil, jeweils mit Anmerkung.

Quelle: openkeel-ok/docs/CONFORMANCE.md

Unit- und Golden Tests

Argument-Parsing

Befehlszeilen werden in denselben Namespace geparst bzw. ergeben denselben Fehler wie mit Pythons argparse.

Ausführung

9,500 synthetische Befehlszeilen über alle Befehle (internal/argparse).

Letztes Ergebnis Identischer Namespace oder Fehler.

Quelle: openkeel-ok/docs/CONFORMANCE.md

Unit- und Golden Tests

Ausgabeformatierer und Konfiguration

Die Ausgaben table, json, yaml, csv, value und shell sind bytegleich; die Auflösung von clouds.yaml und OS_* entspricht osc-lib.

Ausführung

13 Referenzergebnisse aus cliff und PyYAML (internal/output); 19 Konfigurationsszenarien (internal/app).

Letztes Ergebnis Byte für Byte; 1,325 Befehle aus 25 Gruppen implementiert.

Quelle: openkeel-ok/docs/CONFORMANCE.md

End-to-End in einem Lab

End-to-End im OpenKeel-Lab

ok und openstack laufen nebeneinander mit Lesebefehlen über jeden installierten Dienst, danach ein Schreibzyklus mit ok.

Ausführung

Lab installiert mit okadm install --mode lab, erreicht über kubectl port-forward und Endpoint-Überschreibungen.

Letztes Ergebnis 37 / 42 Lesebefehle identisch (die 5 übrigen: Python-Plugins ignorieren Endpoint-Überschreibungen); Schreibzyklus ohne Fehler; server create --wait nicht abgeschlossen (2026-11-02).

Quelle: openkeel-ok/docs/CONFORMANCE.md

Im Rewrite ausgelassen

ok bildet die Befehle, Argumente und Ausgaben der openstack-CLI und ihrer Plugins in einem einzigen statischen Binary nach, ohne interaktive Shell und ohne Laden von Python-Plugins.

Vereinfachte interne Mechanik

Interaktive cmd2-Shell

Warum es ausgelassen wurde

ok ist für Skripte und einmalige Befehle gedacht.

Warum die Lösung nicht beeinträchtigt ist

ok ohne Befehl gibt einen Fehler aus; jeder Befehl läuft weiterhin aus der Shell mit identischen Argumenten und Ausgaben.

Quelle: openkeel-ok/docs/CONFORMANCE.md

Vereinfachte interne Mechanik

Separat installierte Python-Plugins

Warum es ausgelassen wurde

Die Befehlsgruppen von python-openstackclient und der Client-Plugins (Placement, Octavia, Ironic, Barbican, Designate, Manila, Heat, Masakari) sind in ein einziges Go-Binary kompiliert.

Warum die Lösung nicht beeinträchtigt ist

Kein virtualenv und keine Plugin-Installation; 1.325 Befehle sind vorhanden. module list zeigt die Go-Module von ok statt Python-Paketen.

Quelle: openkeel-ok/README.md

Hier ist nur aufgeführt, was bewusst ausgelassen wurde; noch nicht erledigte Arbeit steht in den Known gaps der docs/CONFORMANCE.md des Moduls. Alle Module

Spezifikationen