OpenKeel: la solución Cloud soberana, francesa y de alcance europeo, del grupo inherent Descubrir inherent

Componentes · Consola y herramientas

ok (CLI)

El cliente de OpenStack: los comandos de python-openstackclient 10.3.1 y sus plugins, con los mismos argumentos, salidas y códigos de salida.

Go Binario Go estáticoopenkeel-ok

El módulo

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

Extracto de openkeel-ok/README.md (en inglés).

Cómo se prueba la compatibilidad

ok se compara con la CLI openstack de Python: mismas líneas de comando analizadas, mismos formatos de salida, y ambas CLI ejecutadas contra la misma nube simulada y luego en el laboratorio OpenKeel.

Test diferencial

Comparación diferencial con la CLI de Python

openstack de Python y ok, ejecutados contra la misma nube simulada, dan el mismo código de salida, la misma stdout y stderr y cada petición enviada idéntica.

Ejecución

4,142 casos sobre el catálogo de comandos con respuestas predefinidas; se comparan método, ruta, query, cuerpo y cabeceras de microversión.

Último resultado 4,059 lo comparan todo; 83 omiten una parte, cada uno con una nota.

Fuente: openkeel-ok/docs/CONFORMANCE.md

Tests unitarios y golden tests

Análisis de argumentos

Las líneas de comando se analizan en el mismo namespace, o producen el mismo error, que con el argparse de Python.

Ejecución

9,500 líneas de comando sintéticas sobre todos los comandos (internal/argparse).

Último resultado Namespace o error idéntico.

Fuente: openkeel-ok/docs/CONFORMANCE.md

Tests unitarios y golden tests

Formateadores de salida y configuración

Las salidas table, json, yaml, csv, value y shell son idénticas byte a byte; la resolución de clouds.yaml y OS_* coincide con osc-lib.

Ejecución

13 resultados de referencia procedentes de cliff y PyYAML (internal/output); 19 escenarios de configuración (internal/app).

Último resultado Byte a byte; 1,325 comandos de 25 grupos implementados.

Fuente: openkeel-ok/docs/CONFORMANCE.md

De extremo a extremo en un laboratorio

De extremo a extremo en el laboratorio OpenKeel

ok y openstack se ejecutan en paralelo con comandos de lectura sobre cada servicio instalado, y después un ciclo de escritura con ok.

Ejecución

Laboratorio instalado con okadm install --mode lab, accesible mediante kubectl port-forward y sustituciones de endpoint.

Último resultado 37 / 42 comandos de lectura idénticos (los 5 restantes: los plugins de Python ignoran las sustituciones de endpoint); ciclo de escritura sin errores; server create --wait no concluido (2026-11-02).

Fuente: openkeel-ok/docs/CONFORMANCE.md

Excluido del rewrite

ok reproduce los comandos, argumentos y salidas de la CLI openstack y sus plugins en un único binario estático, sin shell interactivo ni carga de plugins de Python.

Mecánica interna simplificada

Shell interactivo cmd2

Por qué se excluyó

ok está pensado para scripts y comandos puntuales.

Por qué la solución no se ve afectada

ok sin comando muestra un error; cada comando se sigue ejecutando desde el shell con argumentos y salida idénticos.

Fuente: openkeel-ok/docs/CONFORMANCE.md

Mecánica interna simplificada

Plugins de Python instalados por separado

Por qué se excluyó

Los grupos de comandos de python-openstackclient y de los plugins de cliente (Placement, Octavia, Ironic, Barbican, Designate, Manila, Heat, Masakari) se compilan en un único binario Go.

Por qué la solución no se ve afectada

Sin virtualenv ni instalación de plugins; hay 1325 comandos disponibles. module list muestra los módulos Go de ok en lugar de paquetes Python.

Fuente: openkeel-ok/README.md

Aquí solo figura lo que se excluyó por diseño; el trabajo aún no realizado está en los Known gaps del docs/CONFORMANCE.md del módulo. Todos los módulos

Especificaciones