Block subtractive operations in DB migrations
Block subtractive operations in DB migrations

To achieve rolling upgrades we need to make non-backward-compatible DB schema
migrations in a very specific manner that spans through 3 releases. In
particular we need to be very careful when dropping or altering columns
and tables.

This commit adds a test that blocks all the ALTER and DROP operations
from DB migrations. It allows to specify exceptions from this rule for two
purposes:
* Some DROP/ALTER migrations aren't subtractive (e.g. dropping a
  constraint).
* When following the process we've designed for non-backward-compatible
  migrations, we should be able to drop first unused columns or tables
  in O release.

The test is based on similar one implemented in Nova.

Implements: bp online-schema-upgrades

Change-Id: I07df721e5505abe17e45427c05b985b7e923a010

j-griffith/cinder,Nexenta/cinder,Hybrid-Cloud/cinder,phenoxim/cinder,openstack/cinder,eharney/cinder,Hybrid-Cloud/cinder,j-griffith/cinder,Datera/cinder,phenoxim/cinder,bswartz/cinder,mahak/cinder,ge0rgi/cinder,openstack/cinder,bswartz/cinder,eharney/cinder,Datera/cinder,Nexenta/cinder,cloudbase/cinder,cloudbase/cinder,NetApp/cinder,mahak/cinder,NetApp/cinder