Models should be the same as the state in DB after migration

Registered by Ann Taraday

We are using declarative_base in neutron.db.sqlalchemy.models just for reflection, not for db creation.
For creation we are using migrations.
We don't have any tests that checks, that our models are up-to-date.
1) Use always explicit nullable parameter for columns. There are mistakes in current neutron models implementation. (sometimes in schema is nullable=True and in model nullable=False and vise versa). Also at this moment when you see Column description without nullable, you couldn't be sure that is author forget to set nullable='False' or it is really nullable='True'. So the easiest way to track all this and to fix and to avoid such things is to have one rule "always use explicit nullable".
2) Add in __table_args__ indexes and unique constraints
3) Fix all mistakes in models
4) Fix all mistekes in migrations
5) Sync effects of migrations in different backends.
6) Add tests that ensures that models are up-to-date.

This will allow us to find probably some mistake, or missing indexes and make work with db more clean.

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/db-sync-models-with-migrations,n,z

Gerrit topic: https://review.openstack.org/#q,topic:bug/27,n,z

Addressed by: https://review.openstack.org/80539
    Sync models with migrations

Addressed by: https://review.openstack.org/82089
    Set correct nullable parameter for columns

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.