<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 16, 2013 at 11:51 AM, Roman Podolyaka <span dir="ltr"><<a href="mailto:rpodolyaka@mirantis.com" target="_blank">rpodolyaka@mirantis.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello, stackers!<div><br></div><div>Most of you who is interested in work around DB in OpenStack must have read this thread [1] started by Boris Pavlovic. Boris made an overview of the work our team is doing to make DB code better.</div>

<div><br></div><div>One of our main goals is to switch from sqlalchemy-migrate to Alembic for applying of DB schema migrations. sqlalchemy-migrate was abandoned for a long time, and even now when it's become adopted by OpenStack community, we'd better use a project which is supported by upstream (especially in the case when the author of this project is the same person who also authored SQLAlchemy).</div>

<div><br></div><div>The switch isn't going to be simple though. We have a few problems:</div><div><br></div><div>1) stable releases must be supported for some time, so we can't switch from migrate to alembic immediately</div>

<div><br></div><div>The switch should probably be made when previous migrations scripts are "compacted", so all new migrations scripts will use alembic. Switching of such big projects as Nova is hard, so we decided to gain some experience with porting of smaller ones first. Alexei Kornienko is currently working on adding support of Alembic migrations in Ceilometer [3]. </div>
</div></blockquote><div><br></div><div>I like the idea of switching when we do a major release. I don't think we need to port the old migrations to alembic, though, as I said to Alexei on the review. We should be able to continue to have sqlalchemy-migrate distributed as part of OpenStack for the legacy migrations until those migrations can be dropped entirely. Updating would mean running sqlalchemy-migrate, and then alembic, to apply the full set of migrations. From what I understand the policy to be, since we have sqlalchemy-migrate scripts in Havana we could stop creating new ones in Icehouse and drop the use of sqlalchemy-migrate entirely in the J release when the Havana migrations are removed.</div>
<div><br></div><div>Doug</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div><br></div><div>Our long term goal is to switch all projects from using of sqlalchemy-migrate to Alembic.</div><div><br></div><div>2) we rely on schema migrations to set up an SQLite database for running tests</div><div>

<br></div><div>Nova and possibly other projects use schema migrations to set up an SQLite database for running tests. Unfortunately, we can't use models definitions for generation of initial DB schema, because those definitions do not correspond migration scripts. Our team is working on fixing of this issue [2]. </div>
</div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div><br></div><div>As you may now SQLite has limited support of ALTER DDL statements [4]. Nova code contains a few auxiliary functions to make ALTER work in SQLite. Unfortunately, Alembic doesn't support ALTER in SQLite on purpose [5]. In order to run our tests on SQLite right now using Alembic as a schema migration tool, we should add ALTER support to it first.</div>

<div><br></div><div>We are going to implement ALTER support in Alembic for SQLite in the next few weeks.</div><div><br></div><div>As always, your comments in ML and reviews are always welcome.</div><div><div><br></div><div>

Thanks,</div><div>Roman</div></div><div><br></div><div><div>[1] <a href="http://lists.openstack.org/pipermail/openstack-dev/2013-July/011253.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2013-July/011253.html</a></div>

<div>[2] <a href="https://blueprints.launchpad.net/nova/+spec/db-sync-models-with-migrations" target="_blank">https://blueprints.launchpad.net/nova/+spec/db-sync-models-with-migrations</a></div><div>[3] <a href="https://review.openstack.org/#/q/status:open+project:openstack/ceilometer+branch:master+topic:bp/convert-to-alembic,n,z" target="_blank">https://review.openstack.org/#/q/status:open+project:openstack/ceilometer+branch:master+topic:bp/convert-to-alembic,n,z</a></div>

<div>[4] <a href="http://www.sqlite.org/lang_altertable.html" target="_blank">http://www.sqlite.org/lang_altertable.html</a></div><div>[5] <a href="https://bitbucket.org/zzzeek/alembic" target="_blank">https://bitbucket.org/zzzeek/alembic</a></div>
</div>
</div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div>