This is a living document that describes the status of typing in various Python packages in the OpenStack system. Currently this document focuses on libraries and clients. While many services have introduced some degree of typing, none are complete and they are not intended to be consumed by others, thus they are not documented here. We determine whether a package is typed or not by looking for…
This talk introduced OpenStack Resource Controller (ORC), a set of controllers that allows management of OpenStack resources using Kubernetes CRDs. It was delivered during OpenInfra Summit Europe in Paris in October 2025. Managing OpenStack resources efficiently can be complex, especially when striving for cloud-native agility and GitOps workflows. In this talk, we’ll introduce the OpenStack…
This talks was delivered during the OpenInfra Summit Europe in Paris in October 2025. It was a continuation of a talk I gave at the previous OpenInfra Summit and focused on the continued development of the OpenAPI effort over the intervening two OpenStack releases. OpenStack has been on a journey towards implementing formal OpenAPI v3.1 API specifications for all services for a number of releases…
One the joys (or miseries) of working on OpenStack client tooling is that you get exposed to all the nuances of the OpenStack API tooling. The microservice-like architecture, with projects being managed by often wholly separate teams, means there’s precious little consistency across APIs, beyond that enforced by the long-dormant API SIG . I’ve touched on this before, covering things…
I’ve recently found myself once again working on the OpenStack Cinder CSI Driver and the Operator that OpenShift uses to deploy this. This work has inspired me to improve my knowledge of how the Cinder CSI Driver - and CSI drivers in general - work. Below is my current high-level understanding of both as well as a quick summary of changes we are making to the Cinder CSI Driver Operator in…
I previously presented on our work to bring OpenAPI to OpenStack as part of the 2024 OpenInfra Summit Asia, the slides for which you can find here . Since that talk, another release cycle has come and gone and our work has continued to progress. Below is a summary of the current “state of play” for OpenAPI support in OpenStack and a reminder of our long-term goals in the area. This…
This talk was delivered during the OpenInfra Summit Asia in Suwon in September 2024. It focused on two efforts currently underway in the OpenStack community, one to add OpenAPI schema generation to many services, and another to add type annotations to the SDK and OpenStackClient. OpenStack’s APIs - of both RESTful and Python variety - have evolved organically over time. This has allowed them…
It’s an often overlooked fact that OpenStack has two wholly different mechanisms for provisioning block devices for instances. While most people are aware of the Block Storage service, Cinder, not everyone is aware of or gives much thought to the various types of block devices or “ephemeral” storage that the Compute service, Nova, is able to provide. This article serves to…
This is part two of two. If you’re looking for part one, you can find it here . After seeing a few too many availability zone-related issues popping up in OpenShift clusters of late, I’ve decided it might make sense to document the situation with OpenStack AZs on OpenShift (and, by extension, Kubernetes). This is the second part of two. The first part provided some background on what…
In the Dalamation (2024.2) cycle, we’re working on adding OpenAPI schemas for a number of the OpenStack services. As part of this effort, I’ve had to learn more than I would like to know about how various services’ API machinery works. The below is a quick summary of how the mapping of URLs (or rather, paths) to API controller methods works in Nova (and Cinder, Manila and other…
I deploy OpenShift-on-OpenStack quite regularly these days. Some times these deployments fail and the most common failure I usually see is a timeout during bootstrapping. $ openshift-install --log-level debug create cluster DEBUG OpenShift Installer 4.15.10 DEBUG Built from commit 24a827900e76d8f9c79122307415b47a4921bbd7 DEBUG Fetching Metadata... ... DEBUG Reusing previously-fetched Install…
This is part one of two. If you’re looking for part two, you can find it here . This post has been updated since publication to add additional information about implicit and explicit AZs. After seeing a few too many availability zone-related issues popping up in OpenShift clusters of late, I’ve decided it might make sense to document the situation with OpenStack AZs on OpenShift (and,…
Another short one. As mostly anyone that has had to maintain an OpenStack cluster will know, many of the OpenStack services has the ability to report notifications via the message bus. These notifications will be enabled in most production deployments but DevStack doesn’t enable them by default. Fortunately enabling them is pretty painless. If we wanted to enable the notifications in, say,…
This is part two of two. If you’re looking for part one, you can find it here . As noted previously , one of the goals for an upcoming OpenShift release is to formally support MetalLB and the MetalLB operator on the OpenStack platform. In part one of the series, we configured an environment with OpenStack, OpenShift and BGP software routers. Now, in part two, we’re going to focus on…
This is part one of two. If you’re looking for part two, you can find it here . One of the goals for an upcoming OpenShift release is to formally support MetalLB and the MetalLB operator on the OpenStack platform. While MetalLB is mainly targeted at bare metal deployments, it also has value on some on-prem platforms such as OpenStack; for example, if you can’t or don’t want to…
Another one that really belongs in a separate “tips & tricks” section of the blog, which unfortunately does not yet exist. I use openstackclient (OSC) pretty extensively day-to-day. Fedora provides a relatively up-to-date version of the package, but OSC has been evolving very rapidly of late and Fedora’s packagers just can’t be that fast 😁. The solution, therefore, is to…
A quick hack. If you want to call various OpenStack Nova APIs outside the context of a service like nova-compute , there’s a good chance you’ll need some configuration. If you have deployment, you’ll likely have a configuration file with all the necessary details. DevStack places its Nova configuration files at /etc/nova . Nova provides APIs, which are tiny wrappers around…
I’ve been playing around with Gophercloud over the past few days. While it’s nowhere near as complete as openstacksdk (which, coincidentally, recently hit the big 1.0.0 milestone 🎉) or legacy Python-based service clients yet, it is clearly a great tool to have in your arsenal and is the library underlying the Terraform OpenStack Provider , OpenStack platform support in…
The API versioning schemes in use in OpenStack vary between services and have evolved since the early days of OpenStack. There are two types of API versioning to consider: the major version and the minor version. Today, most OpenStack services have settled on a single major API version and have chosen to evolve the API without bumping the major API version any further. There are three API minor…
This talk was delivered at PyCon Ireland 2022 . As the name would suggest, I aimed to describe how to implement a database upgrade pattern using SQLAlchemy + Alembic that would allow you to evolve you database schema without incurring downtime. Alembic is a database migrations tool written by the author of SQLAlchemy. Alembic is easy to get started with an provides a number of sensible defaults…