[dev][nova] How to add a column in table of Nova Database

Stephen Finucane stephenfin at redhat.com
Wed May 25 09:32:54 UTC 2022

On Sun, 2022-05-22 at 17:27 +0800, 韩光宇 wrote:
> Hi,
> I'm a beginner in OpenStack development.
> I would like to try modifying by adding a property to the 'Instances'
> database table. But I didn't find description in the documentation of
> the data model mechanism and how to extend the database.
> https://docs.openstack.org/nova/latest/
> Now, I know that it involves versined object model and alembic.
> My question is:
> What is the process of adding a column to a table in the database?
> Could someone show me the process of modifying a database table or
> recommend me the relevant documentation
> Best wishes,
> Han

This is pretty well documented:


The tl;dr: is a) make your changes to 'nova/db/{main|api}/models.py' then (b)
either auto-generate a schema using alembic's autogeneration functionality or
write one yourself. We have tests in place that will ensure the migrations and
models don't diverge.

You should know that making changes to the database schema will generally
require a spec. You can find information on the purpose of specs and how to
write one here:


Be careful not to treat this as a downstream-only thing (i.e. by forking nova).
If you do, you are likely to cause yourself a lot of pain in the future as the
database schema of upstream nova will invariably diverge.

If you have any questions, please ask here or (better) on #openstack-nova on

Hope this helps,

More information about the openstack-discuss mailing list