[openstack-dev] [Ceilometer] Need help with Alembic...

Herndon, John Luke (HPCS - Ft. Collins) john.herndon at hp.com
Mon Aug 26 19:40:41 UTC 2013


Jay - 

It looks there is an error in the migration script that causes it to abort:

AttributeError: 'ForeignKeyConstraint' object has no attribute 'drop'

My guess is the migration runs on the first test, creates event types
table fine, but exits with the above error, so migration is not
"complete". Thus every subsequent test tries to migrate the db, and
notices that event types already exists.

-john

On 8/26/13 1:15 PM, "Jay Pipes" <jaypipes at gmail.com> wrote:

>I just noticed that every single test case for SQL-driver storage is
>executing every single migration upgrade before every single test case
>run:
>
>https://github.com/openstack/ceilometer/blob/master/ceilometer/tests/db.py
>#L46
>
>https://github.com/openstack/ceilometer/blob/master/ceilometer/storage/imp
>l_sqlalchemy.py#L153
>
>instead of simply creating a new database schema from the models in the
>current source code base using a call to sqlalchemy.MetaData.create_all().
>
>This results in re-running migrations over and over again, instead of
>having dedicated migration tests that would test each migration
>individually, as is the case in projects like Glance...
>
>Is this intentional?
>
>Best,
>-jay
>
>On 08/26/2013 02:59 PM, Sandy Walsh wrote:
>> I'm getting the same problem with a different migration (mine is
>> complaining that a column already exists)
>>
>> http://paste.openstack.org/show/44512/
>>
>> I've compared it to the other migrations and it seems fine.
>>
>> -S
>>
>> On 08/26/2013 02:34 PM, Jay Pipes wrote:
>>> Hey all,
>>>
>>> I'm trying to figure out what is going wrong with my code for this
>>>patch:
>>>
>>> https://review.openstack.org/41316
>>>
>>> I had previously added a sqlalchemy-migrate migration script to add an
>>> event_type table, and had that working, but then was asked to instead
>>> use Alembic for migrations. So, I removed the sqlalchemy-migrate
>>> migration file and added an Alembic migration [1].
>>>
>>> Unfortunately, I am getting the following error when running tests:
>>>
>>> OperationalError: (OperationalError) table event_type already exists
>>> u'\nCREATE TABLE event_type (\n\tid INTEGER NOT NULL, \n\t"desc"
>>> VARCHAR(255), \n\tPRIMARY KEY (id), \n\tUNIQUE ("desc")\n)\n\n' ()
>>>
>>> The migration adds the event_type table. I've seen this error occur
>>> before when using SQLite due to SQLite's ALTER TABLE statement not
>>> allowing the rename of a column. In the sqlalchemy-migrate migration, I
>>> had a specialized SQLite migration upgrade [2] and downgrade [3]
>>>script,
>>> but I'm not sure how I am supposed to handle this in Alembic. Could
>>> someone help me out?
>>>
>>> Thanks,
>>> -jay
>>>
>>> [1]
>>> 
>>>https://review.openstack.org/#/c/41316/16/ceilometer/storage/sqlalchemy/
>>>alembic/versions/49036daaaafd_add_event_types.py
>>>
>>> [2]
>>> 
>>>https://review.openstack.org/#/c/41316/14/ceilometer/storage/sqlalchemy/
>>>migrate_repo/versions/013_sqlite_upgrade.sql
>>>
>>> [3]
>>> 
>>>https://review.openstack.org/#/c/41316/14/ceilometer/storage/sqlalchemy/
>>>migrate_repo/versions/013_sqlite_downgrade.sql
>>>
>>>
>>> _______________________________________________
>>> OpenStack-dev mailing list
>>> OpenStack-dev at lists.openstack.org
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>_______________________________________________
>OpenStack-dev mailing list
>OpenStack-dev at lists.openstack.org
>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5443 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130826/cc65a85f/attachment.bin>


More information about the OpenStack-dev mailing list