def test_purge_deleted_rows_older(self): dialect = self.engine.url.get_dialect() if dialect == sqlite.dialect: # We're seeing issues with foreign key support in SQLite 3.6.20 # SQLAlchemy doesn't support it at all with < SQLite 3.6.19 # It works fine in SQLite 3.7. # Force foreign_key checking if running SQLite >= 3.7 import sqlite3 tup = sqlite3.sqlite_version_info if tup[0] > 3 or (tup[0] == 3 and tup[1] >= 7): self.conn.execute("PRAGMA foreign_keys = ON") # Purge at 10 days old now, should delete 2 more rows db.purge_deleted_rows(self.context, age_in_days=10) vol_rows = self.session.query(self.volumes).count() vol_meta_rows = self.session.query(self.vm).count() vol_type_rows = self.session.query(self.vol_types).count() vol_type_proj_rows = self.session.query(self.vol_type_proj).count() snap_rows = self.session.query(self.snapshots).count() snap_meta_rows = self.session.query(self.sm).count() vol_glance_meta_rows = self.session.query(self.vgm).count() qos_rows = self.session.query(self.qos).count() # Verify that we only have 2 rows now self.assertEqual(2, vol_rows) self.assertEqual(2, vol_meta_rows) self.assertEqual(4, vol_type_rows) self.assertEqual(2, vol_type_proj_rows) self.assertEqual(2, snap_rows) self.assertEqual(2, snap_meta_rows) self.assertEqual(4, vol_glance_meta_rows) self.assertEqual(4, qos_rows)
def test_purge_deleted_rows_older(self): dialect = self.engine.url.get_dialect() if dialect == sqlite.dialect: # We're seeing issues with foreign key support in SQLite 3.6.20 # SQLAlchemy doesn't support it at all with < SQLite 3.6.19 # It works fine in SQLite 3.7. # Force foreign_key checking if running SQLite >= 3.7 import sqlite3 tup = sqlite3.sqlite_version_info if tup[0] > 3 or (tup[0] == 3 and tup[1] >= 7): self.conn.execute("PRAGMA foreign_keys = ON") # Purge at 10 days old now, should delete 2 more rows db.purge_deleted_rows(self.context, age_in_days=10) vol_rows = self.session.query(self.volumes).count() vol_meta_rows = self.session.query(self.vm).count() vol_type_rows = self.session.query(self.vol_types).count() vol_type_proj_rows = self.session.query(self.vol_type_proj).count() snap_rows = self.session.query(self.snapshots).count() snap_meta_rows = self.session.query(self.sm).count() vol_glance_meta_rows = self.session.query(self.vgm).count() # Verify that we only have 2 rows now self.assertEqual(2, vol_rows) self.assertEqual(2, vol_meta_rows) self.assertEqual(2, vol_type_rows) self.assertEqual(2, vol_type_proj_rows) self.assertEqual(2, snap_rows) self.assertEqual(2, snap_meta_rows) self.assertEqual(4, vol_glance_meta_rows)
def test_purge_deleted_rows_older(self): dialect = self.engine.url.get_dialect() if dialect == sqlite.dialect: self.conn.execute("PRAGMA foreign_keys = ON") # Purge at 10 days old now, should delete 2 more rows db.purge_deleted_rows(self.context, age_in_days=10) vol_rows = self.session.query(self.volumes).count() vol_meta_rows = self.session.query(self.vm).count() vol_type_rows = self.session.query(self.vol_types).count() vol_type_proj_rows = self.session.query(self.vol_type_proj).count() snap_rows = self.session.query(self.snapshots).count() snap_meta_rows = self.session.query(self.sm).count() vol_glance_meta_rows = self.session.query(self.vgm).count() qos_rows = self.session.query(self.qos).count() # Verify that we only have 2 rows now self.assertEqual(2, vol_rows) self.assertEqual(2, vol_meta_rows) self.assertEqual(5, vol_type_rows) self.assertEqual(2, vol_type_proj_rows) self.assertEqual(2, snap_rows) self.assertEqual(2, snap_meta_rows) self.assertEqual(4, vol_glance_meta_rows) self.assertEqual(4, qos_rows)
def test_purge_deleted_rows_old(self): dialect = self.engine.url.get_dialect() if dialect == sqlite.dialect: self.conn.execute("PRAGMA foreign_keys = ON") # Purge at 30 days old, should only delete 2 rows db.purge_deleted_rows(self.context, age_in_days=30) with db_api.main_context_manager.writer.using(self.context): vol_rows = self.context.session.query(self.volumes).count() vol_meta_rows = self.context.session.query(self.vm).count() vol_type_rows = self.context.session.query(self.vol_types).count() vol_type_proj_rows = self.context.session.query( self.vol_type_proj, ).count() snap_rows = self.context.session.query(self.snapshots).count() snap_meta_rows = self.context.session.query(self.sm).count() vol_glance_meta_rows = self.context.session.query(self.vgm).count() qos_rows = self.context.session.query(self.qos).count() # Verify that we only deleted 2 self.assertEqual(4, vol_rows) self.assertEqual(4, vol_meta_rows) self.assertEqual(9, vol_type_rows) self.assertEqual(4, vol_type_proj_rows) self.assertEqual(4, snap_rows) self.assertEqual(4, snap_meta_rows) self.assertEqual(8, vol_glance_meta_rows) self.assertEqual(8, qos_rows)
def test_purge_deleted_rows_in_zero_age_in(self): dialect = self.engine.url.get_dialect() if dialect == sqlite.dialect: self.conn.execute("PRAGMA foreign_keys = ON") # Purge at age_in_days=0, should delete one more row db.purge_deleted_rows(self.context, age_in_days=0) with db_api.main_context_manager.writer.using(self.context): vol_rows = self.context.session.query(self.volumes).count() vol_meta_rows = self.context.session.query(self.vm).count() vol_type_rows = self.context.session.query(self.vol_types).count() vol_type_proj_rows = self.context.session.query( self.vol_type_proj, ).count() snap_rows = self.context.session.query(self.snapshots).count() snap_meta_rows = self.context.session.query(self.sm).count() vol_glance_meta_rows = self.context.session.query(self.vgm).count() qos_rows = self.context.session.query(self.qos).count() # Verify that we only have 1 rows now self.assertEqual(1, vol_rows) self.assertEqual(1, vol_meta_rows) self.assertEqual(3, vol_type_rows) self.assertEqual(1, vol_type_proj_rows) self.assertEqual(1, snap_rows) self.assertEqual(1, snap_meta_rows) self.assertEqual(2, vol_glance_meta_rows) self.assertEqual(2, qos_rows)
def purge(self, age_in_days): """Purge deleted rows older than a given age from cinder tables.""" age_in_days = int(age_in_days) if age_in_days <= 0: print(_("Must supply a positive, non-zero value for age")) exit(1) ctxt = context.get_admin_context() db.purge_deleted_rows(ctxt, age_in_days)
def test_purge_deleted_rows_older(self): # Purge at 10 days old now, should delete 2 more rows db.purge_deleted_rows(self.context, age_in_days=10) rows = self.session.query(self.volumes).count() meta_rows = self.session.query(self.vm).count() # Verify that we only have 2 rows now self.assertEqual(2, rows) self.assertEqual(2, meta_rows)
def test_purge_deleted_rows_old(self): # Purge at 30 days old, should only delete 2 rows db.purge_deleted_rows(self.context, age_in_days=30) rows = self.session.query(self.volumes).count() meta_rows = self.session.query(self.vm).count() # Verify that we only deleted 2 self.assertEqual(4, rows) self.assertEqual(4, meta_rows)
def purge(self, age_in_days): """Purge deleted rows older than a given age from cinder tables.""" age_in_days = int(age_in_days) if age_in_days <= 0: print(_("Must supply a positive, non-zero value for age")) sys.exit(1) ctxt = context.get_admin_context() try: db.purge_deleted_rows(ctxt, age_in_days) except db_exc.DBReferenceError: print(_("Purge command failed, check cinder-manage " "logs for more details.")) sys.exit(1)
def purge(self, age_in_days): """Purge deleted rows older than a given age from cinder tables.""" age_in_days = int(age_in_days) if age_in_days <= 0: print(_("Must supply a positive, non-zero value for age")) sys.exit(1) ctxt = context.get_admin_context() try: db.purge_deleted_rows(ctxt, age_in_days) except db_exc.DBReferenceError: print( _("Purge command failed, check cinder-manage " "logs for more details.")) sys.exit(1)
def purge(self, age_in_days): """Purge deleted rows older than a given age from cinder tables.""" age_in_days = int(age_in_days) if age_in_days < 0: print(_("Must supply a positive value for age")) sys.exit(1) if age_in_days >= (int(time.time()) / 86400): print(_("Maximum age is count of days since epoch.")) sys.exit(1) ctxt = context.get_admin_context() try: db.purge_deleted_rows(ctxt, age_in_days) except db_exc.DBReferenceError: print(_("Purge command failed, check cinder-manage " "logs for more details.")) sys.exit(1)