def test_that_get_all_backups_sorted_will_return_only_these_with_null_deleted_column( self): # nopep8 pylint: disable=C0301, W0613 # given table = Table(project_id='example-proj-name', dataset_id='example-dataset-name', table_id='example-table-name', last_checked=datetime(2017, 02, 1, 16, 30)) table.put() backup1 = Backup( parent=table.key, last_modified=datetime(2017, 02, 1, 16, 30), created=datetime(2017, 02, 1, 16, 30), dataset_id='backup_dataset', table_id='backup1', numBytes=1234, ) backup1.put() backup2 = Backup(parent=table.key, last_modified=datetime(2017, 02, 1, 16, 30), created=datetime(2017, 02, 1, 16, 30), dataset_id='backup_dataset', table_id='backup2', numBytes=1234, deleted=datetime(2017, 02, 10, 16, 30)) backup2.put() # when existing_backups = Backup.get_all_backups_sorted(table.key) # then self.assertTrue(backup1 in existing_backups) self.assertTrue(backup2 not in existing_backups)
def perform_retention(self, table_reference, table_key): backups = Backup.get_all_backups_sorted(ndb.Key(urlsafe=table_key)) logging.debug("Fetched %s backups for the table: %s", len(backups), table_reference) if not ShouldPerformRetentionPredicate.test(backups): return logging.info("Retention policy used for table '%s': '%s'", table_reference, type(self.policy).__name__) for backup in self.policy\ .get_backups_eligible_for_deletion(backups=backups, table_reference=table_reference): self.__delete_backup_in_bq_and_update_datastore(backup)