Allow DB migration backports to Icehouse¶
Just as we did at the beginning of the Havana and Icehouse dev cycles, we need to reserve a range of DB migrations as the first DB change in Juno. This will allow a range to be used for migration backports to Icehouse if needed.
Normally, it is not possible to backport a change that requires a database migration due to the linear versioned nature of the migrations. For the last two releases (Havana and Icehouse), we have reserved a set of empty migrations as placeholders to allow for migration backports if needed.
The proposed change is to reserve 10 migrations for Icehouse backports. These migrations would be no-ops and would simply result in an increment of the schema version.
When figuring out ways to allow database migrations, alternatives usually involve discussion of drastic changes to the way we manage migrations. For example, it could require moving to a new framework. This proposal works for our current use of sqlalchemy-migrate. This will also be the third release we’ve used this approach, so it’s fairly well understood at this point.
Data model impact¶
There’s no changes to the data model as a part of this effort. It simply gives us the ability to backport data model changes to Icehouse.
REST API impact¶
Other end user impact¶
These migrations have minimal cost and can be run against a database without taking down Nova services.
Other deployer impact¶
This set of changes requires doing database migrations. However, they can be done without any Nova downtime.
This must be the first set of migrations merged into Juno, or it doesn’t work.
Developers must also be very careful when writing migrations that may be backported. They must be idempotent. For example, if migration 115 is backported to 107 in the previous release, someone who has executed the backported migration must not suffer any trouble when the migration runs again after an upgrade.
- Primary assignee:
Create 10 placeholder migrations.
The existing unit tests will cover this. Both the normal devstack based CI systems, as well as the “turbo-hipster” DB CI system will provide functional test coverage of these placeholder migrations.