yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #36671
[Bug 1482416] Re: bug blocks DB migration that changes column type
** Changed in: nova
Status: New => Invalid
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1482416
Title:
bug blocks DB migration that changes column type
Status in OpenStack Compute (nova):
Invalid
Bug description:
I'm trying to make the following change as a DB migration
+ # Table instances, modify field 'vcpus_used' to Float
+ compute_nodes = Table('compute_nodes', meta, autoload=True)
+ vcpus_used = getattr(compute_nodes.c, 'vcpus_used')
+ vcpus_used.alter(type=Float)
This works at runtime (using PostgreSQL) but when running the unit
tests (using sqlite) I get the following:
nova.tests.unit.db.test_migrations.TestNovaMigrationsSQLite.test_models_sync
----------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/cfriesen/devel/wrlinux-x/addons/wr-cgcs/layers/cgcs/git/nova/.tox/py27/lib/python2.7/site-packages/oslo_db/sqlalchemy/test_migrations.py", line 588, in test_models_sync
"Models and migration scripts aren't in sync:\n%s" % msg)
File "/home/cfriesen/devel/wrlinux-x/addons/wr-cgcs/layers/cgcs/git/nova/.tox/py27/lib/python2.7/site-packages/unittest2/case.py", line 690, in fail
raise self.failureException(msg)
AssertionError: Models and migration scripts aren't in sync:
[ ( 'add_constraint',
UniqueConstraint(Column('host', String(length=255), table=<compute_nodes>), Column('hypervisor_hostname', String(length=255), table=<compute_nodes>), Column('deleted', Integer(), table=<compute_nodes>, default=ColumnDefault(0))))]
This appears to be an interaction between two things, the change I
made to alter the vcpus_used column, and a previous change (commit
2db4a1ac, migration version 279) to add the
uniq_compute_nodes0host0hypervisor_hostname constraint. sqlite
doesn't support altering columns, so there's a workaround to fake it,
and this workaround seems to be running into problems with the
constraint.
I suspect that this means that anyone wanting to change the type of a
column in the "compute_nodes" table (or possibly any table with a
similar constraint) will run into a similar problem.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1482416/+subscriptions
References