コード例 #1
0
    def run(self, cmd, opts, *backups):
        error = 0

        if not backups:
            LOG.info("No backupsets specified - using backupsets from %s",
                     hollandcfg.filename)
            backups = hollandcfg.lookup('holland.backupsets')

        if not backups:
            LOG.warn("Nothing to purge")
            return 0

        if not opts.force:
            LOG.warn(
                "Running in dry-run mode.  Use --execute to do a real purge.")

        for name in backups:
            if '/' not in name:
                backupset = spool.find_backupset(name)
                if not backupset:
                    LOG.error("Failed to find backupset '%s'", name)
                    error = 1
                    continue
                purge_backupset(backupset, opts.force, opts.all)
            else:
                backup = spool.find_backup(name)
                if not backup:
                    LOG.error("Failed to find single backup '%s'", name)
                    error = 1
                    continue
                purge_backup(backup, opts.force)
                if opts.force:
                    spool.find_backupset(backup.backupset).update_symlinks()
        return error
コード例 #2
0
ファイル: purge.py プロジェクト: AlexLSB/zendesk_holland
    def run(self, cmd, opts, *backups):
        error = 0

        if not backups:
            LOG.info("No backupsets specified - using backupsets from %s",
                     hollandcfg.filename)
            backups = hollandcfg.lookup('holland.backupsets')

        if not backups:
            LOG.warn("Nothing to purge")
            return 0

        if not opts.force:
            LOG.warn("Running in dry-run mode.  Use --execute to do a real purge.")

        for name in backups:
            if '/' not in name:
                backupset = spool.find_backupset(name)
                if not backupset:
                    LOG.error("Failed to find backupset '%s'", name)
                    error = 1
                    continue
                purge_backupset(backupset, opts.force, opts.all)
            else:
                backup = spool.find_backup(name)
                if not backup:
                    LOG.error("Failed to find single backup '%s'", name)
                    error = 1
                    continue
                purge_backup(backup, opts.force)
                if opts.force:
                    spool.find_backupset(backup.backupset).update_symlinks()
        return error
コード例 #3
0
ファイル: backup.py プロジェクト: carlwgeorge/holland
    def __call__(self, event, entry):
        purge_policy = entry.config["holland:backup"]["purge-policy"]

        if event == "before-backup" and purge_policy != "before-backup":
            return
        if event == "after-backup" and purge_policy != "after-backup":
            return

        backupset = spool.find_backupset(entry.backupset)
        if not backupset:
            LOG.info("Nothing to purge")
            return

        retention_count = entry.config["holland:backup"]["backups-to-keep"]
        retention_count = int(retention_count)
        if event == "after-backup" and retention_count == 0:
            # Always maintain latest backup
            LOG.warning(
                "!! backups-to-keep set to 0, but "
                "purge-policy = after-backup. This would immediately "
                "purge all backups which is probably not intended. "
                "Setting backups-to-keep to 1"
            )
            retention_count = 1
        if event == "before-backup":
            retention_count += 1
        self.purge_backupset(backupset, retention_count)
        backupset.update_symlinks()
コード例 #4
0
def purge_old_backups(backupset, backups_to_keep=1, exclude=()):
    assert backups_to_keep > 0
    LOGGER.info("Purging old backups from backupset '%s'", backupset)
    backupset = spool.find_backupset(backupset)
    if not backupset:
        backups = []
    else:
        backups = [
            bk for bk in backupset.list_backups(reverse=True)
            if bk not in exclude
        ]
    # Make sure we keep holland:backup.backups-to-keep
    LOGGER.info("Found %d backups.  Keeping %d", len(backups), backups_to_keep)
    purge_list = []
    for backup in backups:
        if backup.config.get('holland:backup', {}).get('stop-time', 0) == 0:
            LOGGER.debug("Purging broken backup")
            purge_list.insert(0, backup)
        elif backups_to_keep == 0:
            LOGGER.debug("Purging old backup")
            purge_list.insert(0, backup)
        else:
            LOGGER.debug("Retaining backup %s", backup.name)
            backups_to_keep -= 1

    if not purge_list:
        LOGGER.info("No backups to purge")
    else:
        for backup in purge_list:
            LOGGER.info("Purging %s", backup.name)
            backup.purge()
コード例 #5
0
ファイル: legacy.py プロジェクト: AlexLSB/zendesk_holland
def purge_old_backups(backupset, backups_to_keep=1, exclude=()):
    assert backups_to_keep > 0
    LOGGER.info("Purging old backups from backupset '%s'", backupset)
    backupset = spool.find_backupset(backupset)
    if not backupset:
        backups = []
    else:
        backups = [bk for bk in backupset.list_backups(reverse=True) 
                   if bk not in exclude]
    # Make sure we keep holland:backup.backups-to-keep
    LOGGER.info("Found %d backups.  Keeping %d", len(backups), backups_to_keep)
    purge_list = []
    for backup in backups:
        if backup.config.get('holland:backup',{}).get('stop-time', 0) == 0:
            LOGGER.debug("Purging broken backup")
            purge_list.insert(0, backup)
        elif backups_to_keep == 0:
            LOGGER.debug("Purging old backup")
            purge_list.insert(0, backup)
        else:
            LOGGER.debug("Retaining backup %s", backup.name)
            backups_to_keep -= 1

    if not purge_list:
        LOGGER.info("No backups to purge")
    else:
        for backup in purge_list:
            LOGGER.info("Purging %s", backup.name)
            backup.purge()
コード例 #6
0
ファイル: backup.py プロジェクト: soulen3/holland
    def __call__(self, event, entry):
        purge_policy = entry.config['holland:backup']['purge-policy']

        if event == 'before-backup' and purge_policy != 'before-backup':
            return
        if event == 'after-backup' and purge_policy != 'after-backup':
            return

        backupset = spool.find_backupset(entry.backupset)
        if not backupset:
            LOG.info("Nothing to purge")
            return

        retention_count = entry.config['holland:backup']['backups-to-keep']
        retention_count = int(retention_count)
        if event == 'after-backup' and retention_count == 0:
            # Always maintain latest backup
            LOG.warning("!! backups-to-keep set to 0, but "
                        "purge-policy = after-backup. This would immediately "
                        "purge all backups which is probably not intended. "
                        "Setting backups-to-keep to 1")
            retention_count = 1
        if event == 'before-backup':
            retention_count += 1
        self.purge_backupset(backupset, retention_count)
        backupset.update_symlinks()