Example #1
0
 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)
Example #2
0
    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)