def test_table(self): table = sqlalchemy.Table() with fixtures.BannedDBSchemaOperations(['Table']): self.assertRaises(exception.DBNotAllowed, table.drop) self.assertRaises(exception.DBNotAllowed, table.alter)
def migrate_up(self, version, with_data=False): if with_data: check = getattr(self, "_check_%03d" % version, None) if version not in self._skippable_migrations(): self.assertIsNotNone(check, ('DB Migration %i does not have a ' 'test. Please add one!') % version) # NOTE(danms): This is a list of migrations where we allow dropping # things. The rules for adding things here are very very specific. # Chances are you don't meet the critera. # Reviewers: DO NOT ALLOW THINGS TO BE ADDED HERE exceptions = [ # The base migration can do whatever it likes self.INIT_VERSION + 1, # 292 drops completely orphaned tables with no users, so # it can be done without affecting anything. 292, # 346 Drops column scheduled_at from instances table since it # is no longer used. The field value is always NULL so # it does not affect anything. 346, ] # Reviewers: DO NOT ALLOW THINGS TO BE ADDED HERE if version not in exceptions: banned = ['Table', 'Column'] else: banned = None with nova_fixtures.BannedDBSchemaOperations(banned): super(NovaMigrationsCheckers, self).migrate_up(version, with_data)
def test_column(self): column = sqlalchemy.Column() with fixtures.BannedDBSchemaOperations(['Column']): self.assertRaises(exception.DBNotAllowed, column.drop) self.assertRaises(exception.DBNotAllowed, column.alter)
def migrate_up(self, version, with_data=False): if with_data: check = getattr(self, "_check_%03d" % version, None) if version not in self._skippable_migrations(): self.assertIsNotNone(check, ('DB Migration %i does not have a ' 'test. Please add one!') % version) # NOTE(danms): This is a list of migrations where we allow dropping # things. The rules for adding things here are very very specific. # Chances are you don't meet the critera. # Reviewers: DO NOT ALLOW THINGS TO BE ADDED HERE exceptions = [ # 267 enforces non-nullable instance.uuid. This was mostly # a special case because instance.uuid shouldn't be able # to be nullable 267, # 278 removes a FK restriction, so it's an alter operation # that doesn't break existing users 278, # 280 enforces non-null keypair name. This is really not # something we should allow, but it's in the past 280, # 292 drops completely orphaned tables with no users, so # it can be done without affecting anything. 292, # 346 Drops column scheduled_at from instances table since it # is no longer used. The field value is always NULL so # it does not affect anything. 346, ] # Reviewers: DO NOT ALLOW THINGS TO BE ADDED HERE # NOTE(danms): We only started requiring things be additive in # kilo, so ignore all migrations before that point. KILO_START = 265 if version >= KILO_START and version not in exceptions: banned = ['Table', 'Column'] else: banned = None with nova_fixtures.BannedDBSchemaOperations(banned): super(NovaMigrationsCheckers, self).migrate_up(version, with_data)
def migrate_up(self, version, with_data=False): if with_data: check = getattr(self, "_check_%03d" % version, None) if version not in self._skippable_migrations(): self.assertIsNotNone(check, ('DB Migration %i does not have a ' 'test. Please add one!') % version) # NOTE(danms): This is a list of migrations where we allow dropping # things. The rules for adding things here are very very specific. # Chances are you don't meet the critera. # Reviewers: DO NOT ALLOW THINGS TO BE ADDED HERE exceptions = [ # The base migration can do whatever it likes self.INIT_VERSION + 1, ] # Reviewers: DO NOT ALLOW THINGS TO BE ADDED HERE if version not in exceptions: banned = ['Table', 'Column'] else: banned = None with nova_fixtures.BannedDBSchemaOperations(banned): super(NovaMigrationsCheckers, self).migrate_up(version, with_data)