bb74212ecf
Change-Id: Ib949bb44bdf4832d480e731a053b92d6afcc3de2
76 lines
3.3 KiB
Plaintext
76 lines
3.3 KiB
Plaintext
# Copyright 2012 New Dream Network, LLC (DreamHost)
|
|
# Copyright 2014 Intel Corporation
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
Climate project uses Alembic to handle database migrations. A migration occurs
|
|
by executing a script that details the changes needed to upgrade/downgrade
|
|
the database. The migration scripts are ordered so that multiple scripts
|
|
can run sequentially to update the database.
|
|
|
|
You can then upgrade to the latest database version via:
|
|
$ climate-db-manage --config-file /path/to/climate.conf upgrade head
|
|
|
|
To check the current database version:
|
|
$ climate-db-manage --config-file /path/to/climate.conf current
|
|
|
|
To create a script to run the migration offline:
|
|
$ climate-db-manage --config-file /path/to/climate.conf upgrade head --sql
|
|
|
|
To run the offline migration between specific migration versions:
|
|
$ climate-db-manage --config-file /path/to/climate.conf upgrade \
|
|
<start version>:<end version> --sql
|
|
|
|
Upgrade the database incrementally:
|
|
$ climate-db-manage --config-file /path/to/climate.conf \
|
|
upgrade --delta <# of revs>
|
|
|
|
Downgrade the database by a certain number of revisions:
|
|
$ climate-db-manage --config-file /path/to/climate.conf downgrade \
|
|
--delta <# of revs>
|
|
|
|
|
|
DEVELOPERS:
|
|
A database migration script is required when you submit a change to Climate
|
|
that alters the database model definition. The migration script is a special
|
|
python file that includes code to update/downgrade the database to match the
|
|
changes in the model definition. Alembic will execute these scripts in order to
|
|
provide a linear migration path between revision. The climate-db-manage command
|
|
can be used to generate migration template for you to complete. The operations
|
|
in the template are those supported by the Alembic migration library.
|
|
After you modified the Climate models accordingly, you can create the revision.
|
|
|
|
$ climate-db-manage --config-file /path/to/climate.conf revision \
|
|
-m "description of revision" \
|
|
--autogenerate
|
|
|
|
This generates a prepopulated template with the changes needed to match the
|
|
database state with the models. You should inspect the autogenerated template
|
|
to ensure that the proper models have been altered.
|
|
|
|
In rare circumstances, you may want to start with an empty migration template
|
|
and manually author the changes necessary for an upgrade/downgrade. You can
|
|
create a blank file via:
|
|
|
|
$ climate-db-manage --config-file /path/to/climate.conf revision \
|
|
-m "description of revision"
|
|
|
|
The migration timeline should remain linear so that there is a clear path when
|
|
upgrading/downgrading. To verify that the timeline does branch, you can run
|
|
this command:
|
|
$ climate-db-manage --config-file /path/to/climate.conf check_migration
|
|
|
|
If the migration path does branch, you can find the branch point via:
|
|
$ climate-db-manage --config-file /path/to/climate.conf history
|