#uuid #keystone #service #config #database #openapi

bin+lib openstack_keystone

OpenStack Keystone service

1 unstable release

Uses new Rust 2024

new 0.1.0 Apr 9, 2025

#239 in #uuid

Apache-2.0

565KB
12K SLoC

OpenStack Keystone in Rust

Attempt to provide Rust library for OpenStack Keystone functionality by implementing database access in the same way as Keystone does. When the concept proves usability this might become a base for reimplementing Keystone in Rust.

Config

Keystone config is being read and the main goal is to have possibility to simply reuse Keystone config with no changes.

Api + OpenAPI

OpenAPI are being built directly from the code to guarantee the documentation matches the implementation.

Database

Sea-ORM is being used to access database. PostgreSQL and MySQL are supported.

Load test

A very brief load test is implemented in loadtest using Goose framework. It generates test load by first incrementally increasing requests up to the configure amount (defaults to amount of cpu cores), keeps the load for the configured amount of time measuring response latency.

First brief results comparing python implementation (running under uwsgi) vs Rust implementation are present in the loadtest/report_py.html and loadtest/report_rust.html. It is absolutely clear that Rust implementation currently misses certain things original Keystone does (token validation is at the moment fake, policy evaluation is also missing, etc). In addition to that more reasonable test environment (comparable amount of python workers, etc, debug/release build) need to be established. However current test shows difference of factor 100 which is not going to be easy to beat.

Dependencies

~43–58MB
~1M SLoC