As models and migrations don't have any logical relation in code, so differences are possible. Furthermore in most of cases differences exists. Possible solution -- adding a new migration and altering a model to remove differences. Next, tests for differences between models and migrations should be added.
Patch that removes diff https://review.openstack.org/#/c/113916/
Adding the sync tests https://review.openstack.org/#/c/110683/
Diff example from glance:
AssertionError: Models and migration scripts aren't in sync:
[ ( 'remove_table',
Table('migrate_version', MetaData(bind=None), Column('repository_id', VARCHAR(length=250), table=<migrate_version>, primary_key=True, nullable=False), Column('repository_path', TEXT(), table=<migrate_version>), Column('version', INTEGER(), table=<migrate_version>), schema=None)),
[ ( 'modify_default',
None,
'image_locations',
'status',
{ 'existing_nullable': False,
'existing_type': VARCHAR(length=30)},
u"'active'::character varying",
None)],
[ ( 'modify_nullable',
None,
'image_locations',
'updated_at',
{ 'existing_server_default': None,
'existing_type': TIMESTAMP()},
True,
False)],
[ ( 'modify_nullable',
None,
'image_members',
'status',
{ 'existing_server_default': None,
'existing_type': VARCHAR(length=20)},
True,
False)],
[ ( 'modify_nullable',
None,
'image_members',
'updated_at',
{ 'existing_server_default': None,
'existing_type': TIMESTAMP()},
True,
False)],
[ ( 'modify_nullable',
None,
'image_properties',
'updated_at',
{ 'existing_server_default': None,
'existing_type': TIMESTAMP()},
True,
False)],
( 'remove_index',
Index('ix_image_properties_image_id_name', Column('image_id', VARCHAR(length=36), ForeignKey(u'images.id'), table=<image_properties>, nullable=False), Column('name', VARCHAR(length=255), table=<image_properties>, nullable=False))),
( 'add_constraint',
UniqueConstraint(Column('image_id', String(length=36), ForeignKey('images.id'), table=<image_properties>, nullable=False), Column('name', String(length=255), table=<image_properties>, nullable=False))),
[ ( 'modify_nullable',
None,
'image_tags',
'updated_at',
{ 'existing_server_default': None,
'existing_type': TIMESTAMP()},
True,
False)],
[ ( 'modify_default',
None,
'images',
'id',
{ 'existing_nullable': False,
'existing_type': VARCHAR(length=36)},
u"nextval('images_id_seq'::regclass)",
None)],
[ ( 'modify_nullable',
None,
'images',
'protected',
{ 'existing_server_default': None,
'existing_type': BOOLEAN()},
True,
False)],
[ ( 'modify_nullable',
None,
'images',
'updated_at',
{ 'existing_server_default': None,
'existing_type': TIMESTAMP()},
True,
False)],
[ ( 'modify_nullable',
None,
'tasks',
'status',
{ 'existing_server_default': None,
'existing_type': VARCHAR(length=30)},
False,
True)],
[ ( 'modify_nullable',
None,
'tasks',
'type',
{ 'existing_server_default': None,
'existing_type': VARCHAR(length=30)},
False,
True)],
[ ( 'modify_nullable',
None,
'tasks',
'updated_at',
{ 'existing_server_default': None,
'existing_type': TIMESTAMP()},
True,
False)]]
Fix proposed to branch: master /review. openstack. org/119824
Review: https:/